關於C語言二維陣列指標問題

時間 2022-07-12 10:05:09

1樓:匿名使用者

"如果是前者的話,每行應該輸出乙個元素才對,如果是後者的話又應該只能輸出每一行的首元素才對呀? "

正如樓上2位仁兄所言,p++指的是前者(下乙個元素的位址)。樓主的疑問似乎是認為,該程式段「每行應該輸出乙個元素才對」。這是不對的,語句printf("%-3d ",*p);是每輪迴圈都要執行的,即按每個數字佔3個int大小列印,不夠的補空格。

只是每過4輪迴圈,if語句會生效一次,列印乙個換行符。

2樓:匿名使用者

樓上回答正確但不太完整,最關鍵的是p定義為int *;所以編譯器知道這個指標的增量為sizeof(int),p++就是指向下一元素。雖然a[0]是行指標,p = a[0]實際上有個從int (*)[4]到int *的型別轉換。

3樓:

p++之後,p指向下乙個元素,雖然你申請的是二維陣列,但是陣列元素的位址實際還是連續的,p開始指向1,然後指向下乙個(3),再指向下乙個(5)……,

每四個數換一次行

4樓:匿名使用者

for(p=a[0];p

迴圈可以寫成for(p=a;p

首先讓指標p指向陣列的開始位置,之後讓它做指標++的迴圈,這樣你是不是好明白點?指標++就是指向了下乙個陣列的位址啊.

求助 C語言二維陣列指標問題,c語言二維陣列用指標表示的問題

1.對於int p a p型別和a是不同的。p是指向乙個指標 指向int型別的量 的指標,a則是指向乙個一維陣列 含2個int元素 的指標。想要建立相同型別的指標應該用int p 2 才行 3.感覺p跟a就同級吧但型別不同 所以其實int p a 兩側的指標的型別是不相同的,只是a的值賦給p而已 假...

C語言題目(關於二維陣列)關於二維陣列的c語言題目

二維陣列定義的一般形式是 型別說明符 陣列名 常量表示式1 常量表示式2 其中常量表示式1表示第一維下標的長度,常量表示式2 表示第二維下標的長度。int a 3 4 如果 int a m n 是乙個已賦值的陣列,則可以用以下的語句段以矩陣形式列印這個陣列 int i,j for i 0 i 二維陣...

c語言關於定義二維陣列的問題,C語言中二維陣列的定義問題

焮欣 首先你要理解二維陣列的真正含義,它的第一維就是一組資料的起始位址,第二維就是某組資料中的某個值.其次,你要知道a 4 所表達的意思,是指二維陣列a的每一維都是由4個元素組成的一維陣列.而編譯器可以根據你賦給a的初值個數計算它的第一維長度 元素總個數 4,如果不能整除,則長度加1,此時還應該有幾...