指向指向字符数组的指针数组的指针
Pointer to array of pointers to array of char
我目前正在研究使用 Koenig 的加速C++C++,我在指向初始指针数组的指针方面遇到了一些麻烦。书中说,以下代码
int main(int argc, char** argv)
{
// if there are arguments, write them
if (argc > 1) {
int i; // declare i outside the for because we need it after the loop finishes
for (i = 1; i < argc-1; ++i)
// write all but the last entry and a space
cout << argv[i] << " ";
// argv[i] is a char*
cout << argv[i] << endl;
}
return 0;
}
当使用"Hello, world"参数运行时会产生 Hello World,但如果argv
是指向指针数组的指针,那么argv[i]
不应该是指向char
数组的指针,该数组的输出是内存地址而不是数组本身?
char*
是"C-string"——它是字符串在C语言中的表示方式。std::cout
知道如何打印char*
,因为<<
运算符的实现过载。
C++还具有std::string
类型,这是表示字符串的另一种方式。
char** argv
与char* argv[]
相同
在 C++ 中引用数组的变量只是指向它的第一个元素的指针。
Argv 基本上是一个 C 字符串数组,它们是字符数组。
Argc 告诉你 C 字符串 argv 指向的数量。
您不需要知道 C 字符串 (char[]) 有多长,因为它们以 null 结尾。它只是从初始内存地址开始逐个字符读取字符串字符,直到它到达空终止符。
相关文章:
- 添加到数组指针
- C++语法差异:二维和一维数组(指针算术)
- 数组指针表示法C++(移动数组时)
- 复制后删除原始数组指针将前 3 个字节设置为 0
- C++访问指向结构的指针中的类数组指针
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- std::flush可以用于将对象指针转换为其封闭数组指针吗
- 创建<int>对整数数组指针的矢量引用 (C++)
- 将 2D 数组指针传递给 C++ 中的函数
- 创建指针是否超过非数组指针的末尾,而不是从 C++17 中的一元运算符和未定义的行为派生?
- 队列数组指针 (C++)
- C++数组指针上的删除操作
- 对于循环不循环和检测字符数组 [指针和字符数组]
- 如何初始化数组指针对象
- 如何正确传递 2D 数组指针作为参数
- 从数组指针中获取怪异的数字
- 初始化std :: unique_ptr作为原始数组指针的初始化
- 将结构数组指针从C#传递到C
- STD :: Sort将数组指针设置为NULL
- C++数组指针错误无法将“int*”转换为“int**”