c 關於char型變數與字串位址的輸出

2021-09-25 22:09:01 字數 773 閱讀 2119

在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型指標陣列 指標陣列...