1樓:匿名使用者
1全部你的3個說法我沒斷好句啊。。。按我的理解解釋一下p指標吧,再自己判斷那3個說法。
int a[6];
int b[2][3];
int c[3][2];
int (*p)[3];
這裡p是一個指標,這個指標指向的區域有3*sizeof(int)大小。
p = &a; p = b; p=c; 編譯器都不會報錯。
p = &a的情況,p[0][0] == a[0], p[1][0] == a[3],可以認為是把線性陣列二維化。
p = b的情況,p跟b可以認為是等價的。
p = c的情況,這個基本上可以認為是把陣列的行數和列數調換,具體內容不變。
為了少費點腦細胞,儘量使用p = b;其他兩個沒有特別的演算法要求不建議使用。
記住了指標指向區域的大小後,這樣就能清楚每個操作具體的記憶體位置,然後該怎麼用就怎麼用吧。
2樓:妙筆生花葛
只要是指標- -指向什麼並沒有大什麼關係吧,主要是指標的型別和所指的型別相同就可以,int (*p)[3],和int p[3],一樣- -.
C 中指標陣列問題定義的是指向字元的指標陣列為什麼輸出的又是整個字串
為便於說明,把問題略為簡化 定義的是指向字元的指標,為什麼能輸出整個字串 在c 中,cout p 中的p如果是字元型指標,就被解釋為 從這個指標的值 地址 開始,一個位元組接一個位元組地把其內容按ascii碼對應的字元輸出到終端,直到遇到 0 停止,且不輸出 0 下面的 表明,當把一個int變數的地...
C語言 若有定義int p,則表示式p的值就是p所指向的變數的地址值加
末了待續 這是錯的,p沒有進行初始化 我也是剛學指標。p就是所指向的變數的地址。p就是所指向的變數的值 因此 p 就是地址值加1吧,額,我也不確定。因為我還沒瞭解到有關儲存地址的知識。我覺得應該是加1了。 錯誤,要看變數佔用的地址空間,這裡是加sizeof int printf d p printf...
指標變數指向的變數的值變了,指標變數會不會變
a還是指向p1,b還是指向p2啊 只不過p1和p2的值互轉了 你說的情況可以這樣寫 int t a a b b t 這樣的話a指向p2,b指向p1,但是p1和p2的值還是原先的值不過不建議這樣寫 a和 b的值互換,也就是p1和p2的值互換,注意是 值 的互換,不是變數名 不會變指標變數中存的是地址,...