簡單的C語言問題,乙個簡單的C語言問題

2022-06-12 19:15:02 字數 1253 閱讀 5381

1樓:紅樓夢裡瀏陽河

指標型別就是陣列名。*b=a就是把a 的陣列名賦值給了*b,則*b就儲存了a陣列。 因為是b++所以先賦值陣列a給b++,然後,b再自加。

則b就為1.因為*b已經儲存了陣列a,所以*b的頭位址開始從陣列a[1]儲存,此時*b={20,30,40,50}因為運算優先順序是單目運算子高,所以先運算++。所以,事實上*b和*b++都儲存的陣列a[1]的值即20,20

2樓:匿名使用者

*b=a,就是*b=a[0]=10,之後b++後,*b就等於a[1]=20,

重要的事後面個*b++為什麼還是等於20,是因為,在執行語句時候,*b++不會先執行++,在執行輸出語句後,*b就等於30了。你用這個程式驗證下嘛:

#include

void main()

;int *b=a;

b++;

printf("%d,%d\n",*b,*b++);//printf("%d",*b);//主要這條語句,看哈嘛}

3樓:

你需要了解一下++ --的運算優先順序

比如 b=1;

那麼b++其實還是等於1; 這個過程中 b自加了1, 此時b等於2;

如果是++b, 則表示式等於2, 同理b自加了1, b也等於2

4樓:匿名使用者

*b=a是指向a的首位址,即a[0],b++指向a[1]

那麼輸出*b當然是a[1],b++是執行完本語句之後再自增1,所以輸出的是20,20.

5樓:匿名使用者

首先,b++那一行已經讓指標b指向了a陣列的第二個數故當*b時輸出20無異議。

其次,*b++是後自增,即在此列時*b++中的++其實沒有用

6樓:

前面的b++使b指向了20,而printf("%d,%d",*b,*b++)裡的b++是輸出完畢後再自加,所以輸出的還是20.

7樓:

int a[5]=;

int *b=a;

b++; //b指標加1,原來指向10,現在指向20

8樓:匿名使用者

左加++運算子是先執行輸出函式printf然後執行自加的。

9樓:匿名使用者

這個問題你要是想仔細理解的話 最後在輸出一次*b 就知道了

printf("%d",*b);

簡單的C語言問題,求大神,乙個簡單的C語言問題,求大神!

你預計是啥樣的啊。簡單的c語言問題,求大神講解!25 前式表示當輸入的第二個整型數m小於等於0時跳出while迴圈,後式表示當輸入的第乙個整型數n小於等於0時跳出while迴圈。但要注意,第二式雖然是第乙個數 0時退出迴圈,但因為scanf 還要等待輸入乙個數,所以第二個數無論輸入什麼數都會跳出wh...

很簡單的C語言指標問題,乙個很簡單的C語言指標問題

我估計有可能你的問題在於 把char t定義在了for迴圈裡面,而不是開始就宣告。vc裡面,如果寫c檔案而不是cpp 函式裡面所有的變數都要在開頭宣告好。如果僅僅是定義char型,我試過了,沒問題。補充答覆 樓主 我把示例給你看 void testfun char s 只要在子函式裡,在前面宣告好就...

簡單的C語言問題,2個簡單的C語言問題

include void main outa 100 i for i 0 i 9 i outa i 1 a i for i 0 i 10 i a i outa i for i 0 i 10 i printf d a i 第二個 include void main b i 0 c i 5 0 for ...