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

#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]....这个问题谁答出来分就给谁

第1个回答  2019-10-25
只有在定义的同时这样(a[20]="what
for")赋值才行,其他不行,这是c语言规定的
要先定义然后再在其他地方赋值的话,就只能一个一个元素单独赋值,不过要是想达到同样的效果(类似a[20]="what
for"),对于字符串数组,可以用库函数strcpy(...)函数赋值,其他的话,你可以自己写函数给他们赋初值!!
第2个回答  2008-03-12
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];
}
第3个回答  2008-03-12

char* ch[2]={ (new char[10]), (new char[20])};本回答被提问者采纳
第4个回答  2019-03-22
char
*ptr_arr[N];
for
(int
i=0;
i
>
l;
对一个没有指向的指针进行写入操作,导致了你的错误...
char
*ptr_arr[N];
for
(int
i=0;
i
评论
0
0
0
加载更多
第5个回答  2008-03-12
你的char* l;有错误,不能这么定义,不知道l该分配多少空间,可以用个数组嘛.char l[10];
相似回答