[英]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.