1樓:匿名使用者
int main()
b是指向a[0]的實體地址,也就是字串a的首地址,而不是字串本身,a[0],a[1],或者*(b+1)、*(b+3)才是字元
nt main()
;int *b=a;
cout<
}如上所說,這裡b就是a[0]的首地址,你將看到一個很大的數字。char在c語言中是int的一個子集,當賦值給char時,儲存在實體地址中的數值其實就是一個整形數。所不同的是char的範圍是0-255(有些可能會稍微大些,一般是這個範圍)。
而int的範圍則視cpu的位數而定,範圍是2^(bits-1)。int與char可以作強制轉換,本質上只是教程式怎樣去顯示一個數,實際上char在儲存空間裡是一個整數。具體看教材,會有很清楚的描述。
2樓:匿名使用者
指標只是指標,也只是一個變數。它不會是字串,說它等於字串地址也是不嚴謹的,應該說它的值是字串的地址(指標只能指向某個地址,也就是說指標的值是某個地址)。第一個程式裡,a是陣列,它代表陣列的首地址,也就是&a[0]。
b指向了a的位置,也就指向了陣列的首地址,就是為b賦值為&a[0](或者a)。至於cout為什麼會輸出字串,這是它的輸出規則,遇到char * 型別的就輸出一個串(直到'\0'結束),而不是它指向的地址值,遇到char型別才輸出一個字元。
C語言指標陣列與二維陣列行指標小問題
指標陣列 copy 該陣列中存放的全部都是指標,例如 原例子中的char name,這個是一個標準透了的一維陣列,就像是陣列 int a 4 a 1 2 a 2 3 不同的是陣列name存放的是指標,陣列a存放的是數字 name 1 name 2 表示的是把name 2 的指標賦值給name 1 就...
C語言程式指標陣列的問題
首先程式存在一個錯誤if max其次 max a,單提陣列名錶示的是陣列第一個元素的地址,所以此處表示指標指向陣列的第一個元素,如果 max的值變了,那麼陣列第一個元素對應的值也相應改變 max a 0 表示指標指向的單元儲存的內容被賦值為a 0 所對應的整數值,max改變並不影響a 0 所儲存的值...
陣列與指標的問題,如下程式,求解釋
p是一個動態變動的指標,而str是陣列的起始地址str 7是 e 的地址而不是字元 而 p就是指p指向的字元 p 2是指每次移動兩位但是不超過第七個 p 首先,對於陣列名的理解,你出了問題,str是一個字元型指標的常量,str 7也就是橫跨了7個單元格,表示的是 e 的地址,其次,對於指標的大小判斷...