C語言簡單的問題

2022-06-07 14:25:11 字數 1130 閱讀 4463

1樓:匿名使用者

陣列名相當於指向陣列首元素的一個常指標,但指標並不等於陣列.把陣列名做常指標用時,不能改變它的指向,也就是說不能對陣列名賦值,只能用陣列偏移來訪問陣列元素,如定義一個陣列int a=,

則*a就是0,*(a+1)就是1等等,這個訪問過程中並沒有改變a的值(即陣列首元素的地址),而是用a偏移一定的量來訪問陣列元素,對指標來說,除了用修飾符*const修飾的指標變數,都可以改變其指向,也就是可以對非常指標變數任意賦值,指標變數儲存的是記憶體單元的地址,定義時要初始化的話也必須用地址或已定義過的指標初始化,而不是一個陣列,當然用一個定義過的陣列名初始化也是可以的,因為陣列名本身就是一個地址或者說常指標。指標定義時若不指向任何記憶體單元可以用null初始化。

2樓:匿名使用者

我的一點點理解,希望對樓主有點幫助.

int *arr;這個定義了一個指向整型的指標變數,他是存的是整型的地址.而int a;這種是整型陣列,他裡面比如括號裡是3的話,那就是有三個整型變數.

而*arr是第一個的地址,所以,沒法這樣賦值.

但是,也可以這樣賦值的*(arr+0)=1;*(arr+1)=2;

*(arr+2)=3;這樣,指標的加一不是簡單的加1,而是按型別加的,

比如,整型在記憶體中儲存點四個位元組的話,(arr+1)就跳過了四個位元組,而存的是下個數的地址了.

3樓:一超獨大

指標跟陣列名用起來是等價的,但在定義時是不能相互取代的.此外,陣列名是常量,不能自加,而指標是變數,其值可以改變.

4樓:匿名使用者

int *arr定義的arr是一個指標,給它賦值的時候要賦地址,

arr=不行的。宣告的時候*arr不等價於arr,用的時候

*arr等價於arr[0].

5樓:匿名使用者

多說了也沒用,樓主看我說

int a=;

int *b;

b=a;//指標b指向a陣列的首地址

很明顯,指標是要先定義的,你int *b=;就不知道你到底是指標,還是陣列了

6樓:匿名使用者

*arr與arr是有區別的

一個定義指標,用來引用陣列,一個就是陣列

簡單的c語言問題,一個簡單的C語言問題

在c語言中a b c這種寫法是不對的 應該寫成a b b c 在你的演算法中a b c的值不確定 當a小於b時 if a b c 就會變成if 0 c 所以結果會發生錯誤 好吧 看的我頭大了,要不我給你寫一個 我上次一個就用了個三目運算子就算出來了!你這個程式就是輸出最大數 最小數 平均數 就用了8...

c語言的簡單問題

while ch ch n 判斷的話用雙等號 while ch ch n while a stop 並且字串比較不能用等號,可以strcmp函式,標頭檔案要加string.h include stdio.h define n 20 int main while ch ch n count i 0 w...

C語言的簡單問題

是求餘數的符號,5除以2等於2餘1,所以5 2 1 1.x y 5,再 2等於1 int a 2 int b 3 a b 0 所以結果就是1了 2.a a n 2 a 1 0 任何數除以1所得的餘數都是03.a 10 把a賦值為10 a 10 a的值再 10 a a的值自加1,例如a 10時,執行a...