为什么要这样写
char* str = (char*)malloc(sizeof(char)*15);
scanf("%s", str);
strings[i] = str;
而不这样写
strings[i] = (char*)malloc(sizeof(char) * 15);
scanf("%s", strings[i]);
//strings[i] = str;
为什么要再定义一个中间量
因为char *str是一个指针,指针变量是可以接受malloc分配的内存。
这个程序里strings应该是一个二维数组,数组本身就有自己分配的内存,怎么能够把内存空间分配给已经有的内存空间呢?这是不被允许的。
string[i]=str;这句话是把指针变量所指定的这段数据,直接复制给了string[i]这段内存里。
你转换为指针类型来接收的,而且堆内存分配是接受首地址和地址长度来分配的,你拿一个数组接收存的只是一个栈内存,在函数结束也就没了
strings是一个二级指针
strings[i]是个指针数组的成员,这两种写法应该都是正确的。