qq_43412960
2019-12-20 14:28
采纳率: 79.1%
浏览 717

结构体指针的内容赋值相关问题

int main()
{

int a=1;
int *b;
typedef struct  
{

int no;
char nn;
}L;
 L  *LL;
LL->no=1;
printf("%d",LL->no);







getch();


return 0;
}

这是我写的代码,代码没有报错,为什么运行的时候会溢出呢?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • qtchen_1988 2019-12-20 16:55
    已采纳

    动态内存没分配;

     L  *LL;
     改成
     L *LL = (L *)malloc(sizeof(L));
    

    全部代码:

    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<malloc.h>
    
    int main()
    {
        typedef struct
        {
            int no;
            char nn;
        }L;
        L *LL = (L *)malloc(sizeof(L));
        LL->no=1;
        printf("%d",LL->no);
        free(LL);
        LL = NULL;
        getch();
        return 0;
    }
    
    
    5 打赏 评论
  • 智者知已应修善业 2019-12-20 14:30

    函数应该写在主函数外,试看

    typedef struct
    {
    public:
        int no;
        char nn;
    }L;
    
        int a = 1;
        int *b;
        L AA;
        L  *LL=&AA;
        LL->no = 111111111;
        printf_s("%d\n", LL->no);
    
    打赏 评论
  • 转瞬即失 2019-12-20 21:39

    用“->”,要声明一个结构体的指针,还要手动开辟一个该结构体的内存,然后把返回的指针给声明的结构体指针,才能用“->”正确引用。
    否则内存中只分配了指针的内存,没有分配结构体的内存,导致想要的结构体实际上是不存在。这时候用“->”引用自然出错了,因为没有结构体,自然没有结构体的域了。

    打赏 评论

相关推荐 更多相似问题