1樓:鷹弈
定義指標陣列,char *name = ;
這個指標陣列包含了3個指標,分別是name[0], name[1], name[2]
首先你要明白什麼是指標自身地址和指標所儲存的地址
&name[0], &name[1], &name[2]是指標自身地址,也就說這個地址裡面的內容是指標,我們知道陣列中每個元素的地址具有連續性,所以&name[0], &name[1], &name[2]這些地址具有連續性
name[0], name[1], name[2]是指標所儲存的地址,也就是這個字串的首地址,裡面的內容為字串,注意這裡的地址不具備連續性
陣列指標(*p)[4],以行為單位,又名行指標,這個[4]代表每行字串最大個數,你的每個字串有5個字元,你卻用了4表示,這本身就是不規範的
這個關係很類似與一級指標與一維陣列的關係,只是多了箇中間過程,只要樓主將這個中間過程搞明白,此題引刃而解
但為什麼用不了(*p)[4]呢,因為指標p儲存的是指標陣列name的第一個指標name[0]的值,而name[0]的內容就是第一個字串,也就是說,他並沒有儲存&name[0],p+1表示指標自動移到第二行,但你的字串地址並不連續,p+1自然無法完成由第一個字串移到第二個字串的首地址的任務
而**p為什麼可以,因為指標p儲存了陣列name的首地址,即儲存了&name[0],因為指標陣列自身地址具有連續性,所以p+1表示指標儲存了&name[1],而&name[1]裡的內容為指標name[1],name[1]裡的內容是第二個字串的首地址,自然就可以呼叫第二個字串,依次往下,同理
2樓:匿名使用者
name是指標陣列,
p是二維陣列指標。
C語言的問題,指標陣列,c語言指標陣列
改變不了,字串常量是改不了的,你可以試試char p aaaaa p 1 b 這樣是改不了的 只能定義二維陣列才可以改 char p 3 100 這樣才可以改,不要問為什麼,字串常量就是不能改 直接讓指標指向另一個字串即可 p 0 aaaa 這樣定義指標指向的字串是無法修改的。c語言指標陣列 p是i...
c中指向行的指標是什麼指標?與普通指標有什麼區別
指向行的指標 它指向的記憶體裡面存放的 依然是指標,而普通指標指向的記憶體裡面存放的是相應型別的資料,比如普通指標int p,p指向的記憶體存放的是int型資料 而int p 5 其中p指向的記憶體存放的還是指標,該指標指向一個存放5個資料的陣列,可以理解為指向行。c語言中的 行指標 與 元素指標 ...
C語言資料指標用途及特點,C語言指標的作用有哪些?
是的實際上函式在記憶體中也要佔據一片儲存單元,這片儲存單元的起始地址,我們稱其為函式的入口地址,即函式的指標,函式的入口地址是用函式名來表示的。因此我們可以定義一個指標變數,讓它的值等於函式的入口地址,然後可以通過這個指標變數來呼叫函式,該指標變數稱為指向函式的指標變數 這裡還有兩個簡單程式關於指標...