姬世鹏 发表于 2020-1-2 20:39:53

->传址符号的使用

#include <stdio.h>//只有有警告,但是无法运行

int main(void)
{
        struct Nme
        {
                char name = "ji";
        } *nme;
       
       
        printf("%s",nme->name);
        return 0;
}

jackz007 发表于 2020-1-2 20:39:54

本帖最后由 jackz007 于 2020-1-3 12:13 编辑

    根本要害是,nme 只是一个指针,并非一个存储空间,只能用来指向一个 struct Nme 的结构实体。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
      struct Nme{
                char name                            ;
      } * nme                                          ;
      if((nme = (struct Nme *)malloc(sizeof(struct Nme)))) {    // 需要在内存中实际分配一个 struct Nme 类型的结构体空间用于储存数据,然后,让 nme 指向它。
                strcpy(nme -> name , "ji")               ;
                printf("%s\n" , nme -> name)             ;
      } else {
                fprintf(stderr , "Error : malloc()\n\n") ;
      }
}

Croper 发表于 2020-1-2 22:21:31

首先,C里是不能定义类内初始值的,C++11以上才有这种写法。
第二,你的nme只是个指针,没有分配空间。直接访问nme->name当然会报错
页: [1]
查看完整版本: ->传址符号的使用