C++字符指针数组的初始化及赋值问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:23:38
#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]....这个问题谁答出来分就给谁


char* ch[2]={ (new char[10]), (new char[20])};

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];
}

你的char* l;有错误,不能这么定义,不知道l该分配多少空间,可以用个数组嘛.char l[10];