我试着分配内存,存储一个字符串然后打印它,但我认为它不起作用。
#include<stdio.h>
#include<windows.h>
int main()
{
char* allochere;
allochere = malloc(sizeof(char));
*allochere = "Hello";
printf("%s",allochere);
return 0;
}
最佳答案
对*allochere
的赋值只为未初始化字符串的第一个字符赋值。由于赋值的右边是一个指针,所以赋值对引导来说是毫无意义的。(如果启用编译警告,编译器将警告您此类赋值有问题。)
要正确初始化字符串,需要调用strcpy
来复制字符串:
strcpy(allochere, "Hello");
此外,您还需要使用正确的大小分配
allochere
,以保存要放在那里的字符串:allochere = malloc(strlen("Hello") + 1);