關於陣列位址,指標

2021-06-01 10:43:46 字數 1797 閱讀 5419

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指向陣列...