在使用結構體指針變量的時候,往往容易犯一個“低級”錯誤。即定義一個結構體指針變量後就直接對結構體指針變量所指向的結構體成員進行操作,從而產生一些莫名其妙的錯誤。我們必須要給結構體指針變量賦予一個有效的結構體變量地址,才能正常操作結構體指針變量。比如:
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);
}