Char数组与Int数组

时间:2015-10-16 22:19:45

标签: c++ arrays

我有以下问题:

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]不会给出像[1] ......

这样的地址

谢谢!

2 个答案:

答案 0 :(得分:1)

字符数组和整数数组之间的基本区别是终止空字符:\0 如果你声明你的角色数组如下: char b[] = {'h','i'}; 然后你的cout语句无法确定要做什么,并会给出奇怪的输出。但是,只要你这样做:

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

char b[] = "hi";

您的cout工作正常。这是因为首先,您在结尾处显式添加空字符,而在第二步中,它会被编译器自动添加。

对于数组和声明为a[]a[][]的数组,编译器将数组的第一个元素的地址存储在变量a中,因此您获得的地址为非字符数组的第一个元素。 有关详细信息,请参阅此链接: What is the difference between int and char arrays?

答案 1 :(得分:-1)

v的类型确定cout&lt;&lt; v打印。

你有一个int数组的情况,其他情况你有char数组。根据定义,Cout打印一个不同于int数组的char数组。就是这样。作为bjorne。