设有如下定义, struct sk { int a; float b; }data; int*p; 若要使P指向data中的a域,正确的赋值语句是( )。

admin2009-01-15  40

问题 设有如下定义,    struct sk    {      int a;      float b;    }data;    int*p;   若要使P指向data中的a域,正确的赋值语句是(  )。

选项 A、p=&a;
B、p=data.a;
C、p=&data.a;
D、*p=data.a;

答案4

解析 data是—结构体变量,a是它的成员,因此引用a域的正确方法是:data.a,取它的地址赋值给指针变量p的语句应该是:p=&data.a。选项A,将a的地址直接赋给了p,而忽略了a为结构体内部的一个成员,而不是一单独的变量,故选项A不正确;选项B在p=data.a表达式中右边为一个结构体变量的成员不是地址,而左边为一指针应该将一地址赋给它,故选项B不正确;选项D表达式*p=data.a是将结构体变量中的成员a的值赋给指针p所指向的变量值,而不是使指针p指向data中的a域,故选项D不正确:4个选项中只有C正确。
转载请注明原文地址:https://kaotiyun.com/show/AQXp777K
0

最新回复(0)