作者kdok123 (小天)
看板C_and_CPP
標題[問題] pointer of char位址的問題
時間Sun Aug 31 12:00:20 2014
首先例一:
int a[] = {1,2,3,4,5};
cout << a << endl; //array a 的初始位址
cout << *a << endl; // 1
cout << *(a+1) << endl; // 2
cout << *(*(&a+1)-1) << endl; // 5
////////////////以同樣的觀念來看char//////////////
char a[] = "123";
cout << a << endl; // 123 ...式一
cout << *a << endl; // 1 ...式2
cout << *(a+1) << endl; // 2 ...式3
cout << *(*(&a+1)-1) << endl; // 怪怪的值 .. 式4
///////////////以下為問題/////////////////////////
從式2和式3可以知道a是一個pointer,但從式一和式四卻不能出現如同例一的效果
問題一:我要如何找到a[]的初始位址?(希望可以印出初始位置)
問題二:如何實現我要的式4 (希望可以印出3)
如果有任何觀念錯誤煩請不吝糾正
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409457622.A.58B.html
※ 編輯: kdok123 (140.112.25.105), 08/31/2014 12:04:38
※ 編輯: kdok123 (140.112.25.105), 08/31/2014 12:05:56
→ StarRoad: &a[0], strlen取字串長度,再用a[length-1]? 08/31 12:33
→ StarRoad: 另外式四的&a應該是取址,這邊+1感覺很不對勁... 08/31 12:34
→ sos0214: 1. &a 2. *((&a+1)-1)+2 08/31 12:36
→ kerwinhui: char[]字串是有一個\0在最後的,代表這個字串的終結 08/31 13:15
→ kerwinhui: 所以位置要再減1…才行 08/31 13:16
→ kerwinhui: 只有char是這樣,是底層如何代表字串的問題… 08/31 13:18