1.以下三條輸出語句分別輸出什麼?
char str1 = "abc";
char str2 = "abc";
const char str3 = "abc";
const char str4 = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << ( str1==str2 ) << endl; // 輸出什麼?
cout << boolalpha << ( str3==str4 ) << endl; // 輸出什麼?
cout << boolalpha << ( str5==str6 ) << endl; // 輸出什麼?
【參***】分別輸出false,false,true。str1和str2都是字元陣列,每個都有其自己
的儲存區,它們的值則是各儲存區首位址,不等;str3和str4同上,只是按const語
義,它們所指向的資料區不能修改。str5和str6並非陣列而是字元指標,並不分配
儲存區,其後的「abc」以常量形式存於靜態資料區,而它們自己僅是指向該區首位址
的指標,相等。
2.array_name
指向陣列中第乙個元素的指標
&array_name
指向整個陣列的指標
例: char a[max]; /*array of max characters*/
char *p = a; /*p為指向陣列的指標*/
char *pa = &a; /*該語句是不正確的,pa的型別為'char *',而&a的型別為'char (*)[max]』*/
char (*pb)[max] = &a; /*該語句是正確的,pb的型別為'char (*)[max]'*/
3.#include
void main()
;
char *p = a;
/*執行下面這句後, vc6.0 提示的錯誤為:cannot convert
from 『char (*)[5]』 to 『char *』,&a的型別應該是指向乙個數
組的指標*/
//char *pa = &a;
/*所以,應該定義乙個指向相同型別和大小的陣列的指標
來獲得「&a」的值*/
char (*point_to_str)[5];
point_to_str = &a;
printf("%d\n%d\n",&p, &point_to_str);
printf("%s\n%s\n", p, point_to_str);
}
結果:
1245044
1245040
abcd
abcd
指標 陣列 位址
指標跟位址概念的不同,指標是一種位址變數,通常也叫指標變數,統稱指標。而位址則是位址變數的值。實際上,位址這個東西,本來就是一種基本資料型別,本應該在介紹整數 浮點 字元等基本型別的時候把位址顯式地放在一起討論,這樣在後面介紹指標與陣列的時候就能避免許多誤解。可惜不少教材或者根本沒有談及,或者就算提...
printf 指標位址 陣列指標和指標陣列
首先,理解一下陣列指標和指標陣列這兩個名詞 陣列的指標 是乙個指標,什麼樣的指標呢?指向陣列的指標。指標的陣列 是乙個陣列,什麼樣的陣列呢?裝著指標的陣列。然後,需要明確乙個優先順序順序 所以 p n 根據優先順序,先看括號內,則p是乙個指標,這個指標指向乙個一維陣列,陣列長度為n,這是 陣列的指標...
關於指標陣列和陣列指標
陣列指標 舉例說明 int p 5 陣列指標的英文是 a pointer to an array 也就是指向陣列的指標。通過int p 5 p 是宣告,宣告p是乙個指標,它指向的內容是int 5 這個陣列。簡單運用下 int a 5 int p 5 a 這裡的意思也就是a是個五位的陣列,而p指向陣列...