我學習 c 已經有一段時間了,假設我認為我對指標有很好的理解,盡管這個例子讓我很煩。
假設我們有一個陣列,其中每個元素都指向一個結構。如果我們為兩個元素分配空間,如下例所示:
p = (test**)malloc(2*sizeof(test*));
p[0] = (test*)malloc(sizeof(test));
p[1] = (test*)malloc(sizeof(test));
這是結構測驗:
typedef struct {
char *t;
long long p;
} test;
現在,當我為變數賦值時,如下所示:
(*p)[1].t = (char*)malloc(10*sizeof(char));
strcpy((*p)[1].t, "test");
(*p)[1].p = 10;
p[1]->t = (char*)malloc(10*sizeof(char));
p[1]->p = 20;
strcpy(p[1]->t, "test34e");
它們填充了完全不同的記憶體塊。在這個例子中,我如何能夠訪問屬性 t (*p)[1].t
?
uj5u.com熱心網友回復:
看來你的意思如下
(*p[1] ).t = (char*)malloc(10*sizeof(char));
strcpy( ( *p[1] ).t, "test");
( *p[1] ).p = 10;
那是p[1]
一個指標。因此,您可以撰寫p[1]->t
或者取消參考指標并獲取結構型別的指向物件 ( *p[1] ).t
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/480158.html