c++中,元素指向字符串的数组

C++, array which elements point to strings

本文关键字:字符串 数组 元素 c++      更新时间:2023-10-16

当我们声明例如

const char* suit[3] = {"Head", "Dia", "Mod"};

这意味着例如suit[0]存储"H"的地址。那么为什么当你输入std::cout << suit[0]时,它会打印"Head"呢?

因为当调用operator<<(std::ostream&, const char*)时,标准库假定指针指向以null结尾的字符数组的第一个元素——这里确实是这样:suit[0]实际上指向数组{'H', 'e', 'a', 'd', ''}

如果你想只得到'H',你必须写:

std::cout << suit[0][0] << std::endl;

,因为如果你只说suit[0],你会得到一个指向"Head"的指针,程序会打印所有内容,直到它到达''字符。简单指针算术。

一些例子:

std::cout << suit[1] << std::endl; //prints Dia
std::cout << suit[1][0] << std::endl; //prints D
std::cout << suit[2] << std::endl; //prints Mode