Re: [問題] pointer to char位址的問題
不好意思,關於C這些觀念 還沒有很了解透徹
讓小弟問幾個問題
int a[] = {1,2,3,4,5};
cout << *(*(&a+1)-1) << endl; // 5
int *p = (int*)(&a+1);
cout << (*p-1) << endl; //未知
cout << *(*p-1) << endl; //不合法
cout << *(p-1) << endl; //5
是這樣嗎?
cout << *(*(&a+1)-1) << endl; // 5
cout << *((int*)(&a+1)-1) << endl; // 5
以上兩式的差別是?
謝謝
※ 引述《kdok123 (小天)》之銘言:
: 首先例一:
: 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), 來自: 42.71.106.47
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1419417978.A.FE7.html
※ 編輯: kf185793 (42.71.106.47), 12/24/2014 18:53:19
→
12/24 19:35, , 1F
12/24 19:35, 1F
→
12/24 20:12, , 2F
12/24 20:12, 2F
→
12/24 20:13, , 3F
12/24 20:13, 3F
→
12/24 20:14, , 4F
12/24 20:14, 4F
謝謝大大,可能小弟愚鈍
同一系列文的第二篇大大有講釋 cout << *(*(&a+1)-1) << endl; 輸出是5
差別是在?
推
12/25 02:14, , 5F
12/25 02:14, 5F
→
12/25 02:14, , 6F
12/25 02:14, 6F
謝大大...這是因為char本來就是一個pointer 所以才可以這樣?
※ 編輯: kf185793 (118.233.69.199), 12/25/2014 11:50:30
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):