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] 的形式。 王天旻 include main int p p a printf d p 1 最原始的方法,p加幾就只向哪一位。不加就指向0位 移回第一位的問題我也碰到過,可以這樣 int q q p 然後對p操作,最後 p q 移回來把指標當引數時常有。 長巷煙雨 說錯了,陣列名是常量指標 而不是指標常量。樓主... char a computer a指向一個常量字串,常量字串是不能修改的,而你的for迴圈內要修改a指向的這個常量字串,自然要出錯 char a computer 這個a就是個普通陣列了,它的內容是可以改動的,就不會出錯了 因為 a是個指標啊 所以應該賦值賦地址!所以 應該 char a compu... 牽著你的手 c 指向函式的指標定義方式為 返回型別 指標名 函式引數列表 例如 void p int 是指向一個返回值為void 引數為int型別的函式。而若想定義一個指向類成員函式的函式指標該怎麼定義呢?對成員函式指標的使用。1 非靜態成員函式 定義方式 返回型別 類名 指標名 函式引數列表 例如...c語言中指標變數指向陣列怎樣使其移回第一位
c語言問題,陣列與指標,C語言陣列和指標的問題
c中指向函式的指標初始化和使用,請教C 中函式型指標和指標型函式的用法和區別,謝謝