小甲鱼老师有一段C++的视频,代码如下:#include <iostream>
int main()
{
const unsigned short ITEMS = 5;
int intArray[ITEMS] = {1, 2, 3, 4, 5};
char charArray[ITEMS] = {'F', 'i', 's', 'h', 'C'};
int *intPtr = intArray;
char *charPtr = charArray;
std::cout << "整型数组输出: " << '\n';
for( int i=0; i < ITEMS; i++ )
{
std::cout << *intPtr << " at " << intPtr << '\n';
intPtr++;
}
std::cout << "字符型数组输出: " << '\n';
for( int i=0; i < ITEMS; i++ )
{
std::cout << *charPtr << " at " << charPtr << '\n';
charPtr++;
}
return 0;
}
这里我有些晕了。charptr是指向字符数组的指针啊?这个指针指向的是字符数组的首地址,即charArray[0]的地址。那std::cout << *charPtr << " at " << charPtr << '\n';这个语句打出来的应该是charArray[0]的地址啊?为什么打出来的是FishC,变成整个数组了呢? 为什么上面整型数组打印的就不是整个数组12345,而是首地址呢?
因为字符串数组比较特殊,想想你要输出一个字符串,是不是可以直接这样
s = "good day"
cout<<s<<endl;
这里s其实也是字符串数组的地址,但是你用cout进行输出的时候,会自动输出里面的字符,直到遇到'\0'
|