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

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

5
已采纳
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 qtchen_1988 2年前

    动态内存没分配;

     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;
    }
    
    
    点赞 4 评论 复制链接分享
  • qq_40634407 转瞬即失 2年前

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

    点赞 1 评论 复制链接分享
  • xianfajushi 智者知已应修善业 2年前

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

    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);
    
    点赞 1 评论 复制链接分享

为你推荐