C 中指標陣列問題定義的是指向字元的指標陣列為什麼輸出的又是整個字串

時間 2021-09-11 22:33:37

1樓:

為便於說明,把問題略為簡化:“定義的是指向字元的指標,為什麼能輸出整個字串”?

在c++中,cout << p;中的p如果是字元型指標,就被解釋為“從這個指標的值(地址)開始,一個位元組接一個位元組地把其內容按ascii碼對應的字元輸出到終端,直到遇到'\0'停止,且不輸出'\0'“。下面的**表明,當把一個int變數的地址強制為char *型時,cout 《也會把4位元組的int資料按位元組的ascii值輸出字串,以證明前述分析的正確性:

//#include "stdafx.h"//if the vc++6.0, with this line.

#include

using namespace std;

int main(void)

輸出是abc  ******xx(這是a變數的16進位制地址,不同平臺值會不同)。

注:a的值是精心選擇的,使它的前3個位元組的ascii碼剛好是abc,後一個是0,否則輸出可能是亂碼,這裡只是在說明cout 《輸出字元指標時的機制。後面的&a表明當指標不是字元型時則輸出指標的地址值,以與前一個字元型指標的處理機制相對照。

2樓:匿名使用者

char* 型別的cout 形為就是顯示其指向的字串的。month[k] 的型別為 const char * ,顯示其內容是正常的。

而*month[k] 的型別為const char,得到的是對應字串的第一個字元,所以結果就是 j f什麼的。

3樓:鼻行動物

這個陣列元素明顯是char*啊。 指向字元的指標陣列是char const (*month)[n_months]

4樓:戰火科技

當char *a="******xx";

這個就是你陣列中的一個元素吧?當使用cout<

當使用cout<

所以按照你的陣列:你cout<<*month[k]<

c\c++中,當你給cout放一個字元指標的時候,它就一直輸出,知道遇到\0這個結尾。而*month[k]是取值,它不是一個指標,所以輸出單個值。

5樓:匿名使用者

char *s

s代表一個記憶體地址

std::cout << s of type char *會解釋為字串

6樓:神奇浪漫

樓上正解!!輸出a和輸出a[mao]當然不一樣

c++指標指向字串變數後輸出指標為什麼錯誤?

7樓:匿名使用者

int main()

string s1="abc";

char *p=&s1[0];

cout

8樓:匿名使用者

因為字元陣列的陣列名就是常量指標,所以可以直接賦值給指標變數

string 是一個類,而類物件的首地址是不能賦值給 char 型別的指標的,二者型別不同,但你可以用下標運算子得到首字母的地址賦值,即 char *p=&s1[0] 的形式。

c語言中指向陣列元素的指標有一點是指標

hdu我愛c語言 比如說陣列 int a 10 之後你第一個指標 int p p a或者p a 0 這兩個是同一個意思。你這樣操作之後 p a a 0 基本就是同一個意思。 唐麗梅 就是當你定義一個陣列m的時候,然後定義一個變數pm指向它,則這個變數pm一開始的時候指向的是這個陣列m的首地址。無論這...

C 中指標的問題,C 中指標的一個問題

貌似是微軟的一個面試還是筆試題吧?以前看到過的。此時如果分別輸出s.p 和p 1 輸出的都是s的地址。關鍵是要理解指標是什麼,就是一個儲存地址的變數。最後一句賦值是非法的,因為對地址0x1寫操作,訪問了非法記憶體。 首先s.p代表著結構體在新建立的時候的一個地址,其中s.p就是訪問s的成員指標 p ...

c 指標陣列問題,C 中關於指標陣列的問題。

是錯誤的。char cchar count 宣告瞭cchar是有count個元素的陣列,每個元素都是指向char型變數的指標。但cin cchar i 卻試圖給cchar的第二個元素 指標 賦一個鍵盤值 這裡指標還沒有確定指向,是隨機的,它隨機地指向了不能寫入的地方,就要出錯。這裡應該先給指標陣列賦...