在C++中创建指针数组 我是C++的新手,所以我对下面的代码感到困惑: const char* headers[]= {"apple","pear","tree"};

在C++中创建指针数组 我是C++的新手,所以我对下面的代码感到困惑: const char* headers[]= {"apple","pear","tree"};,c++,arrays,pointers,C++,Arrays,Pointers,那么这一行应该创建指向char的指针数组吗?也许我错了。如果是这样,为什么要将这样的指针数组分配给字符串数组 我也很困惑,为什么要有这样的指针数组呢?我们能不能简单地做一些类似的事情:int数组[5]={1,2,3,4,5} P> C++中所有这样的指针/引用类东西对于我这样的java世界来说是如此的混乱和困难。 非常感谢 const char* headers[]= {"apple","pear","tree"}; 如果是这样,为什么要将这样的指针数组分配给字符串数组 因为在C语言中没有字

那么这一行应该创建指向char的指针数组吗?也许我错了。如果是这样,为什么要将这样的指针数组分配给字符串数组

我也很困惑,为什么要有这样的指针数组呢?我们能不能简单地做一些类似的事情:int数组[5]={1,2,3,4,5}


<> P> C++中所有这样的指针/引用类东西对于我这样的java世界来说是如此的混乱和困难。

非常感谢

const char* headers[]= {"apple","pear","tree"};
如果是这样,为什么要将这样的指针数组分配给字符串数组

因为在C语言中没有字符串这样的东西。取而代之的是一个尾随0的字符序列

C++有std::string

const char* headers[]= {"apple","pear","tree"};
意味着头是一个字符指针数组。剖析它的简单方法,以查看非数组版本

const char * fruit = "pear";
这将创建一个pear\0文字注释0添加到末尾,然后创建一个指向“p”字符的变量。它包含存储“p”的地址。现在回到

const char* headers[]= {"apple","pear","tree"};
这将创建3个文本“apple\0”、“pear\0”、“tree\0”

它创建了一个由char*指针组成的3项数组

它将标题[0]设置为指向apple的“a”

它将标题[1]设置为指向pear的“p”


它将标题[2]设置为指向树的“t”

回答问题:

const char* headers[]= {"apple","pear","tree"};

此行定义了一个名为headers的变量,其类型数组包含指向const char的3个指针,其中3是从初始值设定项的数量推导出来的。指针被设置为指向3个字符串文本,它们在程序执行过程中保持不变。

希望这会有所帮助,下面通过一些粗略的插图对该行的含义进行基本解释。 请注意,所有的地址都是虚构的,为了使概念更容易理解,一些东西被简化了。原谅粗俗的艺术吧,我远不是一个艺术家! const char*头[]={苹果、梨、树}

这一行告诉编译器您要分配一个数组。数组中的元素将是char*类型。const关键字告诉编译器对象或变量不可修改。char*是数组中元素的类型。headers是变量名,括号[]表示headers是数组。行的其余部分是数组的初始值设定项。标题将有3个char*类型的元素,基本上意思是“指向字符串的指针”。 编译器还将分配内存并通过使用大括号{apple,pear,tree}中的3个字符串中的每一个填充数组来初始化数组

标头数组标头[0]中的第一个元素将包含指向字符串“apple”所在内存的指针。 头数组头中的第二个元素将包含一个指向字符串“pear”所在内存的指针


今天第一次使用std::vector,如果您想要一个与Java等效的使用std::vector或std::array的应用程序,那么使用ITI的生活总是更加顺利。您看到的数组是一个CismIf,那么,为什么要将这样的指针数组分配给字符串数组呢?这不是C++程序员的做法。C++中所有这样的指针/引用东西对于我这样的java世界来说是如此的混乱和困难。我代表C++社区对此表示歉意。C++不是一个什么意思的I-平均编程语言。你需要学习,谢谢。但是我仍然不明白char*headers[]是什么意思?指向C数组的指针指向数组的第一个元素,在本例中是一个char。因此它声明了一个指向字符的指针数组。