[問題] 找記憶體位置

看板C_and_CPP (C/C++)作者 (賢賢)時間16年前 (2009/11/28 21:29), 編輯推噓5(5018)
留言23則, 6人參與, 最新討論串1/7 (看更多)
遇到的問題: (題意請描述清楚) 我照書上打了同樣一段程式碼,可是結果卻不一樣 #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { char str[6]="abcde"; char *s; s=&str[0]; cout <<s<<endl; system("pause"); return 0; } 希望得到的正確結果: 書上是cde 程式跑出來的錯誤結果: 我跑出來是abcde 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) visual C++ 2008 為什麼會不一樣嗎?跟電腦有關嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.81.252.192

11/28 21:31, , 1F
書上印錯
11/28 21:31, 1F

11/28 21:31, , 2F
這個code來說, 印出abcde沒有錯, 如果你程式沒打錯, 就
11/28 21:31, 2F

11/28 21:32, , 3F
是書錯了....@_@"
11/28 21:32, 3F

11/28 21:33, , 4F
恩恩,可是書上是直接附圖耶,不是純粹只有文字
11/28 21:33, 4F

11/28 21:33, , 5F
那大家都一樣應該就是輸錯了,謝謝
11/28 21:33, 5F

11/28 21:38, , 6F
書上會不會是寫 s=&str[2]; // XD
11/28 21:38, 6F

11/28 21:59, , 7F
書錯很大...
11/28 21:59, 7F

11/28 22:41, , 8F
感覺這裡s=&str[0];的寫法不太好@@這樣是在傳址吧
11/28 22:41, 8F

11/28 22:43, , 9F
這樣改了str內容連s的內容都變了, 會誤導新手吧?
11/28 22:43, 9F

11/28 22:43, , 10F
很好奇的問一下書名?...
11/28 22:43, 10F

11/28 23:15, , 11F
其實我覺得大致上書寫的不錯啦,就是指標部分比較難
11/28 23:15, 11F

11/28 23:16, , 12F
請問de大,會誤導是為什麼?可不可以舉例一下.我想知道>謝謝
11/28 23:16, 12F

11/28 23:17, , 13F
address of str[0] 非常容易理解阿...
11/28 23:17, 13F

11/28 23:18, , 14F
而且原本承接"abcde"就是array結構 並不是string const阿
11/28 23:18, 14F

11/28 23:18, , 15F
這樣使用並沒有問題
11/28 23:18, 15F

11/28 23:58, , 16F
同意樓上, 那樣的寫法應該沒有問題, 而且既然沒有
11/28 23:58, 16F

11/28 23:58, , 17F
function call, 怎麼會有什麼傳址的問題?_?
11/28 23:58, 17F

11/28 23:59, , 18F
再說, 把array的address傳入function讀或寫是再基本不過
11/28 23:59, 18F

11/29 00:00, , 19F
的操作, 別說誤導新手, 反而是應該要學會的技巧吧@_@"
11/29 00:00, 19F

11/29 02:05, , 20F
&str[0]只是有點雞肋而已 就像把char轉型成int明確寫出來
11/29 02:05, 20F

11/29 02:08, , 21F
比如說char b; printf("%c", (int)b); 類似這種感覺XD
11/29 02:08, 21F

11/29 02:10, , 22F
printf因為參數列未定,會把整數的實參promote成int
11/29 02:10, 22F

11/29 02:10, , 23F
compiler會自動作 但是你明確寫出來也不算錯,雞肋而已
11/29 02:10, 23F
※ 編輯: Ducray 來自: 140.112.4.93 (02/02 00:34)
文章代碼(AID): #1B4IN2Ps (C_and_CPP)
文章代碼(AID): #1B4IN2Ps (C_and_CPP)