1樓:匿名使用者
你的程式可以執行的。
第一:ptr是一個二維指標。在進行定義之後,即int (*ptr)[2]之後,它是個野指標。而a則是個具有固定地址的靜態二級指標。
a[0][0] a[0][1]
a[1][0] a[1][1]
a[2][0] a[2][1]
其中,a儲存了a[0][0]的地址,也是a+0的地址,即第一行的地址
ptr = a + i; //表示ptr指向a的第i行。i=0時指向第0行首地址,i=1時指向第1行首地址,以此類推。
ptr++表示將ptr當前的地址加上ptr所代表的基本型別(即int型)的位元組數。
ptr++之後,ptr的值為原值加4
第二:我認為你輸出的時候書寫有誤,真的是用一維陣列輸出嗎?我用a[i][j]輸出,如下:12
1 02 0
0 0其中1和2是分別輸入的兩個數。後三行是輸出a[i][j]。
若輸出一維陣列a[j],實際上是輸出了*(a+j),即第j行的首地址。檢視:12
-1080508564-1080508556
-1080508564-1080508556
-1080508564-1080508556
所以我推斷是你的程式有紕漏,樓主對指標的理解還需要深入一下。
我也學的不大好啦,互相學習下!
2樓:匿名使用者
#include"stdio.h"
你先說下你要幹什麼,這是我幫你糾正的,看看行不void main()
,(*ptr)[2],i,j;
for(i=0;i<2;i++)
for(i=0;i<3;i++)}
有個C語言程式看不懂
首先第一個問題 break是跳出while迴圈,也是break以後,其後面的語句不會執行 第二個問題 當輸入的值符合month 1 month 12條件時,就直接break了,不符合這個條件就會顯示error the month you entered is not valid。所以這個題的關鍵就是...
一小段C語言程式看不懂求助
目測程式應該為51微控制器的程式。unsigned char osscankey void unsigned char temp unsigned char i p2 0xff 首先對埠進行寫1操作,這樣把埠置為輸入狀態temp p1 讀另外的一個埠 for i 0 i 8 i if temp 1 ...
新手學習C語言程式看不懂請大家幫忙
程式是從main函式開始執行的,所以你看的時候也可以從main函式開始看,從上到下看.遇到呼叫的子函式再轉到子函式去看,也是從上到下,有問題hi我吧,我白天都在 第一題還想是求素數吧,這是按照素數的定義寫的函式。我把他格式化了一下,應該能看懂了吧。int isprime int a 第二題even ...