网上没找到答案,可能这个问题太简单了,大概我理解的写法就是这样
char* a[20];
a=(char*[20])malloc(100*sizeof(char));
/////
追问:不好意思我之前的描述有些问题(语文老不好了),想问的是字符串数组不是字符串,就是类似于一个字符串的数组,char *a[20]应该是如何取malloc的呢
char *a[20];
int i;
const int len=4;
for (i=0;i<20;i++) {
a[i]=(char *)malloc(len);
strcpy(a[i],"123");
printf("a[%d]:%s\n",i,a[i]);
free(a[i]);
}
(char*)malloc(sizeof(char))就是给指针申请真正用来存储的空间,默认是一个char字符大小
(char*)malloc(sizeof(char)*10)给指针申请10个char类型大小的空间。
char a[20]; <===> char *a = (char *)malloc(sizeof(char)*20);
char *a = new char[20];
malloc是按照数据类型来申请空间的,char[20]当然是按照char来申请空间,不用写成char[20],而且你不用一次性申请100个这样的空间。你申请空间一般是想要链表插入数据,用for循环一个个申请就好了,这样可以节约空间资源,稍微提高运行速率