我卡住了,无法弄清楚为什么这是下面的一段代码没有运行。我是相当新的c/c + +。为什么这会失败
#include <iostream>
int main(){
const char *arr="Hello";
const char * arr1="World";
char **arr2=NULL;
arr2[0]=arr;
arr2[1]=arr1;
for (int i=0;i<=1;i++){
std::cout<<arr2[i]<<std::endl;
}
return 0;
}
这里,因为这是运行完全正常
#include <iostream>
int main(){
const char *arr="Hello";
const char * arr1="World";
char *arr2[1];
arr2[0]=arr;
arr2[1]=arr1;
for (int i=0;i<=1;i++){
std::cout<<arr2[i]<<std::endl;
}
return 0;
}
这是为什么?并且一般如何迭代char **? 谢谢
看来,你对指针的工作方式并没有很好的掌握。从这些行中:'char ** arr2 = NULL;' 'arr2 [0] = arr;' 'arr2 [1] = arr1;' – OmnipotentEntity 2012-07-23 07:10:20
在第二种情况下,它不能正常工作:变量在堆栈上。 – nhahtdh 2012-07-23 07:11:18
如果您在C++中停止使用原始字符数组并使用字符串类,则所有问题都会消失。将'#include'添加到代码文件的顶部,并用'std :: string'替换所有这些混乱。 –
2012-07-23 07:16:20