鱼C论坛

 找回密码
 立即注册
查看: 1376|回复: 2

[已解决]->传址符号的使用

[复制链接]
发表于 2020-1-2 20:39:53 | 显示全部楼层 |阅读模式
8鱼币
#include <stdio.h>//只有有警告,但是无法运行

int main(void)
{
        struct Nme
        {
                char name[20] = "ji";
        } *nme;
       
       
        printf("%s",nme->name);
        return 0;
}
最佳答案
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[20]                            ;
        } * 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") ;
        }
}
833.png

最佳答案

查看完整内容

根本要害是,nme 只是一个指针,并非一个存储空间,只能用来指向一个 struct Nme 的结构实体。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[20]                            ;
        } * 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") ;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-2 22:21:31 | 显示全部楼层
首先,C里是不能定义类内初始值的,C++11以上才有这种写法。
第二,你的nme只是个指针,没有分配空间。直接访问nme->name当然会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 05:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表