我试着分配内存,存储一个字符串然后打印它,但我认为它不起作用。

#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);

10-08 11:30