[問題] pointer to char位址的問題

看板C_and_CPP作者 (小天)時間11年前 (2014/08/31 12:00), 11年前編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/4 (看更多)
首先例一: 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

08/31 12:33, , 1F
&a[0], strlen取字串長度,再用a[length-1]?
08/31 12:33, 1F

08/31 12:34, , 2F
另外式四的&a應該是取址,這邊+1感覺很不對勁...
08/31 12:34, 2F

08/31 12:36, , 3F
1. &a 2. *((&a+1)-1)+2
08/31 12:36, 3F

08/31 13:15, , 4F
char[]字串是有一個\0在最後的,代表這個字串的終結
08/31 13:15, 4F

08/31 13:16, , 5F
所以位置要再減1…才行
08/31 13:16, 5F

08/31 13:18, , 6F
只有char是這樣,是底層如何代表字串的問題…
08/31 13:18, 6F
文章代碼(AID): #1K0ftMMB (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1K0ftMMB (C_and_CPP)