輸出陣列名和輸出陣列首位址(C )

2021-08-20 07:49:11 字數 997 閱讀 2589

char a = ;

char b = "abc";

char c = ;

int d = ;

cout << a << endl;

cout << b << endl;

cout << c << endl;

cout << d << endl;

結果:

分析:1.以字串字面量初始化的字元陣列cout陣列名可以輸出整個陣列;

2.列表初始化的字元陣列必須加上字串結束符『\0』才能cout陣列名才能正確輸出整個陣列

3.列表初始化的字元陣列沒加加『\0』的話,可以看見字元陣列列印出來了,但是後面多了幾個字元,因為cout不知道什麼時候結束

4.而其他型別的陣列,比如int,cout陣列名輸出的是這個陣列的16進製制位址,後面會驗證這一點。

為什麼會出現這種情況呢?不是說陣列名代表陣列的首位址嗎?

因為cout對於cha過載了《運算子唄。

另外強調一點,陣列b和c的長度都是4位元組。

那麼我們怎麼輸出char陣列的首位址呢,用printf:

printf("%p \n", c);

printf("%p \n",d);

也可以這樣:

printf("%p \n", &d[0]);
%p表示以16進製制的形式輸出。

陣列d的位址怎麼跟上面不一樣,因為這是執行兩次的截圖。。

以後遍歷陣列可以多使用範圍for迴圈,自動檢測,節省時間,比如輸出上面定義的陣列d:

for (auto v: d) 

cout << endl;

注:這是c++11新特性,vs2010不支援的,我用的vs2015.

陣列名和陣列首位址

常規而言,陣列名就是陣列的首位址。int a 10 上面定義乙個int型陣列,陣列長度為十。a是乙個int 型常量指標,其儲存的值就是陣列的首位址。include int a 2 intmain 結果如下 a 0x804a014 a 0x804a014 a 1 0x804a018 a 1 0x804...

陣列名和陣列名取位址

在c中,在幾乎所有使用陣列的表示式中,陣列名的值是個指標常量 也就是陣列第乙個元素的位址。它的型別取決於陣列元素的型別 如果它們是int型別,那麼陣列名的型別就是 指向int的常量指標 在以下兩種場合下,陣列名並不是用指標常量來表示,就是當陣列名作為sizeof操作符和單目操作符 的運算元時。siz...

陣列名和陣列名取位址

1 int a 10 2 int p a 3 int q 10 a 第二個為指向陣列的指標.a只是a 0 的位址,a 1就是a 1 的位址了,a是整個a 10 的首位址,是以整個陣列為角度來看,雖然它與a 0 的值相同,但是 a 1就已經增加了10個int型別的位元組的長度了.1 include 2...