#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;
不知道你这个问题是否已经解决, 如果还没有解决的话: