Re: [問題] 小問題

看板C_and_CPP (C/C++)作者 (終於註冊好囉)時間16年前 (2009/06/19 01:47), 編輯推噓6(606)
留言12則, 4人參與, 最新討論串3/3 (看更多)
※ 引述《imprazaguy (Wayne)》之銘言: : ※ 引述《QQQQ (終於註冊好囉)》之銘言: : : #include<iostream> : : using namespace std; : : int main() : : { : : char array[]={'a','b','c','d'}; : : cout<<&array[0]; : : system("pause"); : : return 0; : : } : : 抱歉~有點蠢的問題 : : 想釐清些小觀念 : : 我只能知道此陣列的起始位址(cout<<&array) : 事實上array就代表起始位址,不需要用 &array : 之所以不會印位址是因為 cout 碰到 char*型態的資料 會當成字串輸出 : 所以你改成 : cout << (void*)array; : cout << (void*)array[0]; : 就沒問題 : : 無法表示出各字元對應的位址嘛?? : : (會出現亂數) : : 和下比較: : : #include<iostream> : : using namespace std; : : int main() : : { : : int num[]={1,2,3,4}; : : cout<<&num[0]; : : system("pause"); : : return 0; : : } : : 此整數陣列就可對應出個別位址 : : 我實在搞不懂兩者差異XD : : 抱歉~真是個蠢問題 再小小延伸一下 程式如下: #include<iostream> using namespace std; int main() { char array[]={'a','b','c','d'}; cout<<(void*)array<<endl; cout<<(void*)array[0]; system("pause"); return 0; } 為何兩者位址不一樣呢?? 把array看成指標 array指標的位址不是等於arrray[0]的位址嘛?? 我真的混亂了XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.150.202

06/19 01:51, , 1F
cout<<(void*)(&array[0]);
06/19 01:51, 1F

06/19 01:52, , 2F
你真的混亂了...
06/19 01:52, 2F

06/19 01:57, , 3F
你先了解array[0]和&array[0]和array的關係吧
06/19 01:57, 3F

06/19 02:00, , 4F
樓上 他是寫(void*)array[0] 沒有加& ~ 所以印出來不一樣
06/19 02:00, 4F

06/19 02:02, , 5F
不過 cout<<(void*)array<<endl;印出來是甚麼 我也不清楚耶
06/19 02:02, 5F

06/19 02:02, , 6F
應該是印97吧 'a'的ASCII
06/19 02:02, 6F

06/19 02:03, , 7F
我知道 所以我跟他說要加 & ...才會一樣
06/19 02:03, 7F

06/19 02:03, , 8F
喔喔! 也許是上一篇打那樣誤導了@@
06/19 02:03, 8F

06/19 02:03, , 9F
&array[0]才會跟array一樣 要叫他了解我卻自己說明了...
06/19 02:03, 9F

06/19 02:06, , 10F
不過 該怎麼解釋&array 和array 是一樣呢??
06/19 02:06, 10F

06/19 03:29, , 11F
就是規定,背起來就好啦。而且只有值一樣,資料型態不一樣
06/19 03:29, 11F

06/19 21:56, , 12F
我懂了~感謝大家
06/19 21:56, 12F
文章代碼(AID): #1AEdspz2 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AEdspz2 (C_and_CPP)