#include <iostream> #include <cstring> using namespace std; int main() { char* ch[2]={"a","b"};//初始化 char* l; cin> > l; ch[0]=l;//赋值 cout < <ch[0]; cin.get(); return 0; } 以上代码编译可以通过,输入字符流后出现异常,0x00402732 处未处理的异常: 0xC0000005: 写入位置 0x00000001 时发生访问冲突,为什么赋值会出错? 字符指针相当于字符数组,那么一维字符指针数组应该相当于字符串数组吧. 我还想问的是,在C语言中对字符指针数组初始化可以用for加上malloc函数,那相应的在C++中可不可以用new来初始化呢?可以的话怎么初始化?哦,是的,这个地方忽略了....其实我最想问的是怎么用new初始化char *a[2]....这个问题谁答出来分就给谁
只有在定义的同时这样(a[20]="whatfor")赋值才行,其他不行,这是c语言规定的要先定义然后再在其他地方赋值的话,就只能一个一个元素单独赋值,不过要是想达到同样的效果(类似a[20]="whatfor"),对于字符串数组,可以用库函数strcpy(...)函数赋值,其他的话,你可以自己写函数给他们赋初值!!
char *ptr_arr[N];for (int i=0; i<N; ++i) {ptr_arr[i] = new char[M];}//...for (int i=0; i<N; ++i) {delete []ptr_arr[i];}刚才不是说了么?不过leewycyp说的也可以的!-----------------char* l;cin>> l; 对一个没有指向的指针进行写入操作,导致了你的错误...char *ptr_arr[N];for (int i=0; i<N; ++i) {ptr_arr[i] = new char[M];}//...for (int i=0; i<N; ++i) {delete []ptr_arr[i];}