看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 我照書上打了同樣一段程式碼,可是結果卻不一樣 #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
twotwoone:書上印錯 11/28 21:31
VictorTom:這個code來說, 印出abcde沒有錯, 如果你程式沒打錯, 就 11/28 21:31
VictorTom:是書錯了....@_@" 11/28 21:32
Ducray:恩恩,可是書上是直接附圖耶,不是純粹只有文字 11/28 21:33
Ducray:那大家都一樣應該就是輸錯了,謝謝 11/28 21:33
VictorTom:書上會不會是寫 s=&str[2]; // XD 11/28 21:38
softwind:書錯很大... 11/28 21:59
devilarise:感覺這裡s=&str[0];的寫法不太好@@這樣是在傳址吧 11/28 22:41
devilarise:這樣改了str內容連s的內容都變了, 會誤導新手吧? 11/28 22:43
devilarise:很好奇的問一下書名?... 11/28 22:43
Ducray:其實我覺得大致上書寫的不錯啦,就是指標部分比較難 11/28 23:15
Ducray:請問de大,會誤導是為什麼?可不可以舉例一下.我想知道>謝謝 11/28 23:16
softwind:address of str[0] 非常容易理解阿... 11/28 23:17
softwind:而且原本承接"abcde"就是array結構 並不是string const阿 11/28 23:18
softwind:這樣使用並沒有問題 11/28 23:18
VictorTom:同意樓上, 那樣的寫法應該沒有問題, 而且既然沒有 11/28 23:58
VictorTom:function call, 怎麼會有什麼傳址的問題?_? 11/28 23:58
VictorTom:再說, 把array的address傳入function讀或寫是再基本不過 11/28 23:59
VictorTom:的操作, 別說誤導新手, 反而是應該要學會的技巧吧@_@" 11/29 00:00
holymars:&str[0]只是有點雞肋而已 就像把char轉型成int明確寫出來 11/29 02:05
holymars:比如說char b; printf("%c", (int)b); 類似這種感覺XD 11/29 02:08
holymars:printf因為參數列未定,會把整數的實參promote成int 11/29 02:10
holymars:compiler會自動作 但是你明確寫出來也不算錯,雞肋而已 11/29 02:10
※ 編輯: Ducray 來自: 140.112.4.93 (02/02 00:34)