C语言中全局结构体指针隐含的错误

2023-06-15,,

  前天在嵌入式系统上,调试一个数组的全局变量时,发现该变量一直会动态变化。深入分析,

才发现该全局结构体没有申请内存,而是用了一个指针。这种情况编译器是检查不出来的,在linux

上运行会挂掉,但是在裸系统上运行不会挂死。

  错误的例子:

#include <stdio.h>
typedef struct
{
int testa;
int testb;
}str_test; str_test* g_str_test; int main()
{
g_str_test->testa = ;
printf("testa:%d \n\t",g_str_test->testa);
printf("testb:%d \n\t",g_str_test->testb);
}

  正确的方法:

  

#include <stdio.h>
typedef struct
{
int testa;
int testb;
}str_test; str_test g_s_test; int main()
{
g_s_test.testa = ;
printf("testa:%d \n\t",g_s_test.testa);
printf("testb:%d \n\t",g_s_test.testb);
}

  总结反思:C语言是很博大精深的,里面很多东西要深入的研究。要达到滚瓜烂熟的境界。

C语言中全局结构体指针隐含的错误的相关教程结束。

《C语言中全局结构体指针隐含的错误.doc》

下载本文的Word格式文档,以方便收藏与打印。