簡體   English   中英

指向 struct 的指針,這甚至是指向 struct 的指針嗎?

[英]Pointer to struct ,is this even a pointer to struct?

我有一個結構體,里面有變量。 現在我需要動態分配內存,所以最初我使用

Struct struct-name *a =Null; 

稍后,我使用malloc為其分配內存,然后使用

a[0].variableA=allocate , a[0].variableB=allocate.

我的問題是,這甚至是指向 struct 的指針,因為我沒有給出 struct 的地址。 而且這種技術是有效的,它是如何知道 struct 的地址的。 當我沒有使用“&”明確給出結構的地址時。 我知道這可能很愚蠢,但我很困惑。謝謝。

Struct st
{
 int a ;
int b;
}
Struct a *ptr=NULL;

在主要

    ptr=malloc(sizeof(struct st)*2);
    //Assume array of size 2 is created 
Now I can use 
    ptr[0].a=10;

即使沒有明確給出結構地址,我如何使用它。

問題是您沒有了解malloc工作方式。 (您提到我將使用 malloc 為其分配內存

struct struct_name *a = NULL;
a = malloc(sizeof *a);
...

這將計算struct struct_name在內存中占用的字節數,然后從malloc請求那么多字節並將結果(即,剛剛使用malloc創建的內存塊起始地址)分配給名為a的指針。 這就是整個故事。

現在您將在確保它沒有返回NULL后訪問它。 無需對任何struct struct_name變量實例應用&地址。

在您的情況下, ptr用於訪問動態分配的不同結構實例 - 地址在哪里? 指向第一個實例的地址包含在ptr 然后您使用ptr[0]ptr[1]來訪問該結構實例。 然后你訪問了它。

是的ptr是指向結構的指針。

額外的一件事:-

malloc可能無法為請求提供服務,它可能會返回空指針。 最好對此進行檢查以防止以后嘗試取消引用空指針。 如果您取消引用 NULL 指針,則它是未定義的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM