在程序中怎么对 char *p[4]赋值

在程序中如何对 char *p[4]赋值?
程序中间变量有字符串 "abc","123","def","456",我之前是定义了一个二维数组来放的,感觉有点浪费。然后我想把他们分别放在一个数组指针里面,就定义了一个*p[4],但在程序中对*p[4]赋值都不行,请问该如何实现这种功能?
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

char *p[4] ;
p[0]= "abc";
p[1]="123";
p[2]="def";
p[3]="456";


我用的是:strncpy(p[i],str,num); //把有效的字段放到数组内。
编译没问题,但无法正常运行的。


但如果我把p[i]直接定义成一位数组,如char p[10],运行正常。


小朋友,傻了吧?
指针是一个完整类型的对象,但它未必指向一个对象。为了使它指向一个对象,你可以选择的方法之一是malloc
p [0] = malloc (num + 1);
strncpy (p[i], str, num);

------解决思路----------------------
给数组中每个元素都new你所需要的空间
------解决思路----------------------
char *p[4]只是一个指针数组,没有存放数据的空间,把字符串的地址放在里面可以,要想修改数据是不可以的,因为字符串是常量