1樓:匿名使用者
樓上都說的很不錯。針對補充,我說兩句
結構體名字不是指標,結構體陣列的名字才是指標
就好像int x;.....x不是指標,int x[2].....x是常量指標
同樣 struct aa{};...aa x;...x不是指標,aa x[3]....x是常量指標
對於陣列int a[2]=,我們通常把a看成是指標
但實際上,這個指標並不存在的,a代表這個陣列的首地址,只有才參與表示式運算時,才暫時轉化為常量指標(不可更改)
所以&a,取出的這個實際不存在的指標的地址,同陣列第一個元素的地址是一樣的
換個例子,如果你這麼定義
int a[3],*p=a;
printf("%d",&p);........就是p的自身地址,類似你上面的***x
printf("%d",p);..........就是陣列a的首地址,類似你上面的yyyy
總結你定義一個普通指標p的話,p和&p是不同的
你定義一個陣列a的話,a和&a是相同的,因為c中只是把a看做常量指標,而不是實際存在的
2樓:邊介
看了下你的**和表明,
如果你說的陣列變數的名字是一個指標,那麼你可以試下把別的地址傳給它試下,既然不能存別的地址,也能叫指標?
還有 最後那裡
我沒去除錯一下是不是真的也輸出yyyy這個地址值,但是你可以知道指標的指標是拿指標的地址來做運算的,int *p,**p,n=5;
*p=&n;
**p=&p;
確實p的值就是n的地址,但是p自己的地址就可以被指標的指標拿去了&p就是指標的地址,那麼現在你的那個輸出我就不理解了,實際上確實是***x
3樓:
結構體是一種資料型別,陣列不是一種而是0~maxint種資料型別,所以結構名是一個變數名,陣列名是一組變數名,所以結構體變數不代表地址,陣列名是地址,所以陣列名是一個常量指標,陣列名用取址運算子得到的是一批變數的首地址所以和陣列名錶示的常量指標相同。結構體是不同型別的變數的集合,形一個新的資料型別,所以結構和預定義變數一樣,是一個真正的變數,所以變數名不是指標而地址也和變數一樣必須用取址運算子獲取。
4樓:
因為func1的形參為指向結構體的指標,所以呼叫時需加&取結構體地址
5樓:十指跳舞的男人
因為func1()的引數是個指標,所以要取引數的地址!
輸出的區別就是取值和取地址!
6樓:匿名使用者
printf("a = %p\n", &a); 改為printf("a = %d\n", &a);
c語言 結構體陣列指標 與malloc記憶體分配的問題 80
7樓:匿名使用者
struct student *list;
int count = readstudentinfo("假設這是檔名", &list);
這個函式是這樣被呼叫。
裡面應該這樣寫
int readstudentinfo(const char* filename, struct student** pstudents)
8樓:匿名使用者
這麼多,。。。。。。。
c語言中的指標陣列和陣列指標的區別
9樓:黑丶雨
指標陣列:陣列裡的每一個元素都是指標如*p[10],裡面的 p[0] 到 p[9] 都是指標;
可參考:http://baike.
陣列指標:指向一個陣列的指標,如 arr[10] 是一個陣列, 讓一個指標指向這個陣列 p = arr;
訪問時通過 *(p + n) 或 p[n] 訪問元素值,n為元素索引值;
可參考:http://baike.
10樓:育知同創教育
int (*p)[4]; // 定義一個陣列指標,指向含4個元素的一維陣列,陣列元素是int型別。
int *p[4]; // 定義一個指標陣列,陣列中每個元素是一個指標,指標指向**就要根據程式來定了。
判斷陣列指標與指標陣列主要通過運算子的優先順序來判斷。
int (*p)[4]; // 由於( )的優先順序高,說明p是一個指標,指向一個一維陣列的指標
int *p[4]; // 由於[ ]的優先順序高,先與p結合成為一個陣列,再由int*說明這是一個整型指標陣列
C語言中字元陣列和字元指標
又問了一遍哈,我就知道這麼多了 前者是靜態的,也就是每次都要設定一個最大的max上限才能保證不會越界。後者是動態的,你可以用多少就申請多少,可以在任何時候擴大或減小 free 當資料很大時,就需要把不用的空間free,而直接開陣列不可以 另外如果在main內,陣列不能開很大,但是卻可以malloc一...
c語言中指標和引用的區別,C語言中指標和引用的區別
指標,全稱為指標變數,是用來儲存記憶體地址的一種變數。程式中,一般通過指標來訪問其指向的記憶體地址中的內容 資料 引用,是c 中提出來的一種新的使用變數的方式,即,給實際變數起個別名,通過這個別名來引用實際的變數。標準c中不支援變數的引用。這兩個概念沒有任何相關性。指標是實實在在的變數,有自己的記憶...
結構體指標陣列與結構體陣列有什麼不同
a是一個結構體陣列,已經有100個節點了。不需要再分配空間了。b是一個結構體變數,也已經有空間了,就和int b 已經有空間了一樣。c是一個指標陣列,c也已經有空間了,有3個元素,但是這三個元素是還沒有分配空間的指標,所以要用malloc分別為他們分配記憶體。d是一個結構體指標,和int d 一樣還...