打印结构体指针成员失败


#include 
typedef struct tagRECT {
      long left;
      long top;
      long right;
      long bottom;
    } RECT,*PRECT,*NPRECT,*LPRECT;
  
int main()
{
    LPRECT lpRect;
    printf("否");
    printf("%d\n",(lpRect->bottom)); //为什么这里挂了 
    printf("否");
    

    
    while(1){
        Sleep(1000);
    }
    return 0;
}

为什么打印结构体指针成员失败,程序跑不到2222位置就挂了

LPRECT lpRect是tagRECT * 类型,你没有初始化(动态分配malloc),所以有错误,而且bottom也没有初始化,就算前面是正确的,这里打印出来也是一个垃圾值,建议复习一下指针和typedef用法

没有给lpRect赋值啊,所以是空指针,访问不到结构成员,要赋个初始值:

 
#include <stdio.h>
typedef struct tagRECT {
      long left;
      long top;
      long right;
      long bottom;
    } RECT,*PRECT,*NPRECT,*LPRECT;
  
int main()
{
    LPRECT lpRect = new tagRECT{ 0, 0, 100, 100 }; // 赋初始值
    printf("否");
    printf("%d\n",(lpRect->bottom)); //为什么这里挂了 
    printf("否");
    
    while(1){
        Sleep(1000);
    }
    return 0;
}

因为没有初始化,导致指针指向一个随机的地址,程序就跑飞了。给个初始值就好。

// 初始化方式1
    RECT d = {1,2,3,4};
    RECT* lpRect = &d;
    // 初始化方式2
    RECT* lpRect = (RECT*)malloc(sizeof(RECT));
    lpRect->bottom = 4;
    lpRect->right = 3;
    lpRect->left = 2;
    lpRect->left = 1;


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^