是否可以重新分配如下定义的变量:char string[128]
?
我有一段这样的代码:
...
count = strlen(string);
if ((string = realloc(string, (count + 2) * sizeof(char))) == NULL) {
...
}
...
和编译器说:"从类型'void *'"中分配类型'char [128]'时不兼容的类型。类似的操作适用于定义char *string
。
答案 0 :(得分:3)
char string[128];
定义了一个静态大小的char
数组。没有必要为它分配内存,但另一方面,没有办法调整内存部分的大小。
要使用动态大小的数组,请在完成后使用char *string;
string = malloc(128)
,string = realloc(string, newsize)
和free(string)
。
答案 1 :(得分:0)
char string[128];
分配空间,因此string不是真正的指针。
如果你的字符串定义如下,它将起作用:char *string;