struct的字符变量只能用strcpy()初始化吗?该怎么处理

struct的字符变量只能用strcpy()初始化吗?
书上说struct的字符变量只能用strcpy()初始化,不能用“=”初始化。于是我自己写了个反例,却编译通过了 怎么回事?

C/C++ code
#include <stdio.h>

int main()
{
    struct human
    {
        char *name;
        int price;
    }cpu;
    cpu.name="abc";
         //书上是这样strcpy(cpu.name,"abc")
    printf("%s",cpu.name);
}


是书上有错还是我的编译器有错啊

------解决方案--------------------
strcpy的做法是赋值,而不是初始化。但是,在做赋值之前,要记得给那么分配好内存。
------解决方案--------------------
编译器没错,不过你这个代码不够安全。
------解决方案--------------------
先分配内存,才能strcpy
------解决方案--------------------
LZ为什么不用strcpy运行一下呢?如果没有先给成员分配空间的话,用strcpy会运行错误。