Char数组vs Int数组

Char array vs Int array

本文关键字:数组 Int vs Char      更新时间:2023-10-16

我有以下问题:

int a[2][2]={{1,2},{3,4}};
cout<<a[1]; //the output is 0x29ff18 , which is an address
--------------------------------------------------------------------
char b[][6]={"hello","there","now"};
cout<<b[1]; //the output is there, which is value of b[1]

我想知道为什么b[1]不会像a[1]那样给出地址…

谢谢!

字符数组和整数数组的基本区别是结束的空字符:如果你这样声明你的字符数组:char b[] = {'h','i'};然后,您的cout语句无法确定该做什么,并将给出奇怪的输出。但一旦你这样做了:

char b[] = {'h','i',''};

char b[] = "hi";

您的cout工作正常。这是因为在第一个语句中,您显式地在末尾添加了一个空字符,而在第二个语句中,它由编译器自动添加。

对于数组,以及声明为a[]a[][]的数组,编译器将数组第一个元素的地址存储在变量a中,因此在非字符数组的情况下,您将获得第一个元素的地址。有关更多信息,请参阅此链接:整型数组和char数组的区别是什么?

v的类型决定了什么值<<v输出。

一种情况是int array,另一种情况是char array。根据定义,Cout输出与int数组不同的字符数组。事情就是这样。bjorne。