C語言的問題,C語言的問題

2022-08-10 18:05:19 字數 1227 閱讀 5373

1樓:匿名使用者

*p=a+sizeof(a)/sizeof(int)-1;//這句把陣列a最後一個元素的地址賦給指標p

然後利用迴圈讓指標p不斷地前移,每前移一次把對應的陣列元素值加一;

最後指標p移動到陣列a的前一個位置,所以*(p + 1)就是陣列的第一個元素,並且加過1的.

所以*(p + 1) 就是 11 + 1 = 12.

以上是程式的總體思路。

由於陣列a是int型別的,所以其中每個元素都佔用四個位元組,並且指標p也是int型別的,所以指標p每進行一次p--就會在記憶體中往下移動四個位元組。

subl $48, %esp

movl $11, 20(%esp)

movl $12, 24(%esp)

movl $13, 28(%esp)

movl $-4, 32(%esp)

movl $-5, 36(%esp)

movl $-6, 40(%esp)

這是陣列初始化的彙編**,可以看出陣列後面的元素佔用高地址,p--就是往陣列前面移動就好理解了。

2樓:

c.已經執行驗證。

其中,sizeof(int)=4,sizeof(a)=4*6=24.

故,p=a+6-1=a+5。執行得12.

#include

void main()

,*p=a+sizeof(a)/sizeof(int)-1;

//其中,sizeof(int)=4,sizeof(a)=24.

while(p>=a)

//這裡p>a

//多次迴圈最後在a[0]=11處停止迴圈,此時的a[0]=a[0]+1=12

printf(「%d\n」,*(p+1));

//最終指向的位置為11+1=12的位置}

3樓:成靈慧

你要做什麼

這裡*p=a+sizeof(a)/sizeof(int)-1;

指標已經指到陣列最後一個元素了

你後面又 弄了個迴圈,做什麼啊

4樓:帳號已登出

正確答案是c

12int *p=a+sizeof(a)/sizeof(int)-1 的作用是讓p指向陣列的最後一個元素。

5樓:匿名使用者

12最後輸出的 *(p+1)=a[0]+1

C語言的問題,C語言問題。。。

呵呵,除了第三題,其他都不容易。有空的編吧,我看著 如果你真正掌握了c語言,其實也不是很難 c語言問題。double 在輸入 輸出時,要使用 lf 格式符。scanf lf lf f1,f2 include int main else for i lower i upper 2 i 2 return...

c語言問題,C語言問題!

prid32是個什麼?而且你的雙引號得加轉義符吧?去掉prid32前後的雙引號,另外prid32是否有定義?你的這個軟體支援c99或者c11嘛 就像vc6.0版本太老就不支援c99 看看軟體支不支援 沒有巨集定義,在標頭檔案下面加 define prid32 d c語言問題!因為s是一個指向floa...

c語言問題,c語言問題

include void main 定義f 0 1 f 1 1 for i 2 i 20 i 從2開始到19做迴圈,這裡你少打一個i f i f i 2 f i 1 例如當前i 2則f 2 f 0 f 1 2 迴圈繼續 i 3則 f 3 f 2 f 1 3 迴圈繼續.for i 0 i 20 i 從...