原创 结构体指针变量使用时的注意事项

2009-1-10 13:30 1965 4 4 分类: MCU/ 嵌入式

在使用结构体指针变量的时候,往往容易犯一个“低级”错误。即定义一个结构体指针变量后就直接对结构体指针变量所指向的结构体成员进行操作,从而产生一些莫名其妙的错误。我们必须要给结构体指针变量赋予一个有效的结构体变量地址,才能正常操作结构体指针变量。比如:


struct UART{


             int a;


             uchar b;


}


main()


{


      struct UART  *p;


      p->a = 0xXXX;


      p->b = 0xXX;


     printf("%i,%c",p->b,p->a);


}


这个程序输出的值将是不可预知的,因为“在程序中只是定义了一个结构体指针变量,并没有给该结构体指针变量赋一个有效值,因此该结构体变量所指向的地址将不确定,从而不能得到预期结果”


应该改为:


struct UART{


             int a;


             uchar b;


}


main()


{


      struct UART  *p;


     struct UART dd;


      p = ⅆ               //这句一定要有,否则将出现不可预知的问题


      p->a = 0xXXX;


      p->b = 0xXX;


     printf("%i,%c",p->b,p->a);


}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条