在c裡面如果指標是乙個基本數值型
int ,foalt ,long等,如果輸出裡有
cout << ptr << endl;
其中ptr是指標的名,則輸出的值是指標的位址,
如果是char * (char指標) 則輸出的是char指標的值。
int i=97;
char c='a';
cout<<"line 1: i="《我想,對於line 1的輸出結果是沒有任何疑問的,而且,我想對於初學指標的朋友來說,你可能也會跟我一樣,毫不猶豫的認為輸出的會是兩個位址,可是,你只答對了一半!
首先,我想先介紹一下在c++中字串的基礎知識。
char *str="string";
char str2="string2";
char str3=;
cout<<"line 3: str="《執行可知,這3行的輸出就是儲存的字串的值,而並非我們認為的位址。那麼,我們可以聯絡到前面&c,其實這就是乙個char *的變數,所以,輸出的自然就應該是字串的值。可是,&c儲存的字串是沒有終止符的,因此輸出的也就是亂碼了。
最近,在讀到《c++程式設計教程》(第4版)第12章的時候,我才解決了這個疑惑。實際上,任何程式設計師希望輸出為位址的指標變數都要作乙個轉換,即強制char *轉換成void *,那麼,char型變數和字串的位址就可以以十六機制的格式輸出了,如下所示:
cout<<"line 6: static_cast(&c)="<(&c)<(str)="<(str)《此時,可以看到輸出的結果就是char型別變數和字串變數的位址了。
c 中關於char型變數與字串位址的輸出
參考至 在c裡面如果指標是乙個基本數值型 int foalt long等,如果輸出裡有 cout ptr endl 其中ptr是指標的名,則輸出的值是指標的位址,如果是char char指標 則輸出的是char指標的值。在c 中,熟悉int和char型的變數是最基本不過的了,不過,我想,很多初學者會...
關於字元型char變數
寫程式時,意外發現個很不容易察覺問題出在哪的問題的 scanf c ch scanf c c printf ch c n ch printf c c n c 如果輸入是 a b 那麼輸出會是 ch a c 問題出在哪?如果將 改為 scanf c ch scanf c c printf ch c n...
字串指標與char型指標陣列
一 字串指標 字串是一種特殊的char型陣列,指向char型別陣列的指標,就是字串指標。與普通指標一樣,字串指標在使用前也必須定義。字串與char陣列的區別在於長度,字元會自動在尾部加上乙個長度 0 而char型陣列的長度就是其字元的個數。字串長度是字元個數 1。例 二 char型指標陣列 指標陣列...