打印
[C语言]

结构体赋值问题

[复制链接]
2078|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanghelovehuang|  楼主 | 2018-8-3 15:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yanghelovehuang 于 2018-8-3 16:12 编辑

大家好,我定义了个结构体:struct node {
        int a;        char b【128】;
};

然后在main中赋值:
main()
{
struct node *no;

no->a = 7;

return;
}
当运行到no->a = 7时出现段错误 请问这是为什么啊?怎么解决?

评论
zyj9490 2018-8-4 19:45 回复TA
no都没有指向结构体的变量,怎么会有NO->A这个变量呢?当然有问题啊。 

相关帖子

沙发
ayb_ice| | 2018-8-3 15:18 | 只看该作者
典型的野指针

使用特权

评论回复
板凳
Cjy_JDxy| | 2018-8-3 15:53 | 只看该作者

int main(void)
{
        struct node *no;
        int b;
        no=&b;
       
        no->a = 7;

return;
}

使用特权

评论回复
地板
yanghelovehuang|  楼主 | 2018-8-3 16:07 | 只看该作者
Cjy_JDxy 发表于 2018-8-3 15:53
int main(void)
{
        struct node *no;

您好 大神 no=&b什么意思啊 有啥作用啊?

使用特权

评论回复
5
yanghelovehuang|  楼主 | 2018-8-3 16:10 | 只看该作者
Cjy_JDxy 发表于 2018-8-3 15:53
int main(void)
{
        struct node *no;

不行你那个是指针不兼容的赋值 我编译过了错误

使用特权

评论回复
6
yanghelovehuang|  楼主 | 2018-8-3 16:11 | 只看该作者

别只会说,解决办法ok 我发贴是找办法的

使用特权

评论回复
7
ayb_ice| | 2018-8-3 16:15 | 只看该作者
本帖最后由 ayb_ice 于 2018-8-3 16:17 编辑

struct node MyNode;

int main(void)
{
        struct node *no;
        no=&MyNode;

        no->a = 7;

        return 0;
}

使用特权

评论回复
8
Cjy_JDxy| | 2018-8-3 16:27 | 只看该作者
yanghelovehuang 发表于 2018-8-3 16:07
您好 大神 no=&b什么意思啊 有啥作用啊?

给no赋一个地址

使用特权

评论回复
9
yanghelovehuang|  楼主 | 2018-8-3 17:15 | 只看该作者

不行 编译的时候提示指针不兼容

使用特权

评论回复
10
yanghelovehuang|  楼主 | 2018-8-3 17:18 | 只看该作者
ayb_ice 发表于 2018-8-3 16:15
struct node MyNode;

int main(void)

嗯嗯 谢谢 这样是不是就把值赋给全局变量的结构体了?在所有的函数中提取这个元素的值都是7?

使用特权

评论回复
11
ayb_ice| | 2018-8-3 17:27 | 只看该作者
yanghelovehuang 发表于 2018-8-3 17:18
嗯嗯 谢谢 这样是不是就把值赋给全局变量的结构体了?在所有的函数中提取这个元素的值都是7? ...

使用特权

评论回复
12
Cjy_JDxy| | 2018-8-3 18:58 | 只看该作者
yanghelovehuang 发表于 2018-8-3 17:15
不行 编译的时候提示指针不兼容

我是在Dev C++里试的,可能跟单片机的C有区别

使用特权

评论回复
13
Vansm| | 2018-8-3 22:09 | 只看该作者
只定义node型的指针,没给赋值就进行间接访问, 结构体也没实例化,就好比声明了一种房子,定义了一个门牌号,就拿着门牌号去找房子,压根没就盖房子。  看来是个新手

使用特权

评论回复
14
caijie001| | 2018-8-3 22:48 | 只看该作者
c和指针学一下,

使用特权

评论回复
15
梦幻泡影| | 2018-8-4 09:42 | 只看该作者
typedef struct
{
        int a;
        char b[128];
}node;


node c;


int main()
{

        c.a = 7;

        printf("%d\n", c.a);

        return 0;
}

使用特权

评论回复
16
七颗咖啡豆| | 2018-8-4 13:38 | 只看该作者
这手确实很新,补习一下C基础

使用特权

评论回复
17
hclwj181| | 2018-8-4 13:41 | 只看该作者
我个人觉得新手除非特殊就要避免用指针,不然以后做项目时候各种问题,自己也痛苦,接受你烂摊子的人更痛苦。当然如果只是学生另当别论

使用特权

评论回复
18
阳光下的泡馍| | 2018-8-6 11:37 | 只看该作者
你的no定义的是结构体指针,都没有对这个指针赋值,怎么会有->操作呀

使用特权

评论回复
19
诸葛豆包| | 2018-8-6 13:32 | 只看该作者
struct snod
{
        int a;
        char b[10];
};

void main()
{
        struct snod *nod1;

        nod1 = (struct snod *)malloc(sizeof(struct snod));
        memset(nod1, 0, sizeof(struct snod));

        nod1->a = 10;

        printf("%d\n", nod1->a);
}

使用特权

评论回复
20
xxzouzhichao| | 2018-8-6 17:12 | 只看该作者
yanghelovehuang 发表于 2018-8-3 16:11
别只会说,解决办法ok 我发贴是找办法的

无语,人家这六个字就是解决办法啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

324

帖子

1

粉丝