我卡住了,無法弄清楚爲什麼這是下面的一段代碼沒有運行。我是相當新的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