若有如下定义:  struct sk{      int a;  int b;  }data,*p=&data;  则对data中的成员x的正确引用的是()。 A、(*p).aB、(*p).data.aC、p->data.aD、p.data.a

题目

若有如下定义:  struct sk{      int a;  int b;  }data,*p=&data;  则对data中的成员x的正确引用的是()。 

  • A、(*p).a
  • B、(*p).data.a
  • C、p->data.a
  • D、p.data.a

相似考题
更多“若有如下定义:  struct sk{ &”相关问题
  • 第1题:

    已知有结构体: struct sk { int a; float b; }data,*p; 若有p=&data,则对data的成员a的正确引用是( )。

    A.struct是结构体类型的关键字

    B.st是结构体类型名

    C.x、y、z都是结构体成员名

    D.struct str是结构体类型名


    正确答案:B
    解析: 本题主要考查结构类型的定义:struct是结构体类型的关键字;struct str是结构体类型名;x、 y、z都是结构体成员名;st是结构变量名。

  • 第2题:

    现有如下定义:struct aa{int a;float b;char c;}*p;现需用malloc函数动态的申请一个struct aa类型大小的空间(由p指向),则定义的语句为: 【17】 。


    正确答案:
    p=(struct aa *) malloc (sizeof(struct aa));

  • 第3题:

    已知有如下结构体:

    struct sk

    { int a; float b; }data,*p;

    若有P=&data,则对data的成员a引用正确的是( )。

    A.(*p).data.a

    B.(*p).a;

    C.p->data.a

    D.p.data.a


    正确答案:B
    本题主要考查结构指针:P=&data,访问结构体的成员。它可以通过结构变量访问,即data,可以用等价的指针形式:(*p).a和P->a来访问结构体变量中的成员。

  • 第4题:

    若有以下定义的语句: struct student { int age; int num;}; struct student stu[3]={{1001,20},{1002,19},{1003,21}}; main() { struct student *p; p=stu; …} 则以下不正确的引用是( )。

    A.(p++)->num

    B.p++

    C.(*p).num

    D.P=&stu.age.


    正确答案:D
    解析:结构体成员的引用可以用“结构体变量名.成员名”或者“结构体变量指针->成员名”两种方式来引用。注意:结构体类型的变量、数组和指针变量的定义。

  • 第5题:

    设有下列定义: struct sk { int m; float x; )dara,*q; 若要使q指向data中的m域,正确的赋值语句是( )。

    A.q=&data.m;

    B.*q=data.m;

    C.q=(struct sk*)&data.m;

    D.q=(struct sk*)data.m;


    正确答案:C
    解析: 利用强制类型转换(struct sk*),把整数型地址&data.m转换成结构体变量指针赋给结构体指针变量q。

  • 第6题:

    若有下面的说明和定义,则sizeof(struct aa)的值是______。 struct aa { int r1;double r2;float r3; union uu{char ul[5]long u2[2]}ua; }mya;

    A.30

    B.29

    C.24

    D.22


    正确答案:D
    解析:结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元;共用体变量所占的内存长度等于最长的成员的长度。结构体变量aa中,成员r1占2个字节,r2占8个字节,r3占4个字节,共用体ua占8个字节,所以共占用2+8+4+8=22个字节。

  • 第7题:

    若有以下结构体定义,则是正确的引用或定义。struct example{ int x; int y;}v1;

    A.example.x=10

    B.examplev2.x=10

    C.struct v2;v2.x=10

    D.struct example v2={10};


    正确答案:D
    解析:在定义结构体变量时,不能只用结构体名example或关键字struct进行定义,必需要用结构体类型名structexample定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。

  • 第8题:

    若有以下结构体定义,则______是正确的引用或定义。 struct example { int x; int y; }v1;

    A.example.x=10

    B.example v2.x=10

    C.example.x=10

    D.struct example v2={10};


    正确答案:D
    解析:在定义结构体变量时,不能只用结构体名example或关键字struct进行定义,必需要用结构体类型名struct example定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。

  • 第9题:

    若有以下定义和语句 struct a{ int n,m;}; struct a st[3]={{2,3},{4,5},{6,7}}; struct a*p=st;则以下错误的引用是A.(p++)->n; B.st[0].n; C.(*p).n; D.P=&st.m,


    正确答案:D
    题目中给出了一个结构体,结构体类型名为 struct  a。该结构体成员列表包括两个整型变量。随后定义了一个结构体数组st[3],该数组的大小为3,同时定义了一个结构体指针p,指向数组st。
    选项A为(p++)->n,是指先将p的指针执行++操作,指向st[1],然后得到该结构体变量中的值n。
    选项B为st[0].n,这个是标准的结构体数组变量引用,得到结构体数组变量st[0]中的值n。
    选项C为(*p).n,该表达式与p->n是等价的,得到当前指针所指结构体变量中的值n。
    选项D为p=&st.m,该选项是错误的。若p是一个定义过的指向结构体变量的指针,则用它指向结构体变量的某一个成员,编译时将指出地址的类型不匹配。

  • 第10题:

    若有以下结构体定义,则是正确的引用或定义。 Struct example { int x; int y; }V1;

    A.example.x=10

    B.example V2.x=10

    C.structv2;v2x=10

    D.struct examplev2={10};


    正确答案:D
    解析:在定义结构体变量时,不能只用结构体名example或关键字struct进行定义,必需要用结构体类型名structexample定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。

  • 第11题:

    设有如下定义:

    struct sk

    { int m;

    floatx;

    }data,*q;

    若要使q指向data中的m域,正确的赋值语句是( )。

    A)q=&data.m;

    B)*q=data.m;

    C)q=(struct sk*)&data.m;

    D)q=(struct sk*)data.m;


    正确答案:C

  • 第12题:

    单选题
    若有以下程序: typedef struct S {int g;char h;}T; 以下叙述中正确的是(  )。
    A

    可用S定义结构体变量

    B

    可用T定义结构体变量

    C

    S是struct类型的变量

    D

    T是struct S类型的变量


    正确答案: D
    解析:
    AC两项,S是定义的结构体的名字,并不是struct类型的变量也不可用来定义结构体变量;D项,题目中T定义为struct S类型,即T被定义为一个类型名,而不是变量。答案选择B选项。

  • 第13题:

    若有下面的说明和定义

    struct test

    { int ml; char m2; float m3;

    union uu {char ul[5]; int u2[2];} ua;

    } myaa;

    则sizeof(struct test )的值是

    A.12

    B.16

    C.14

    D.9


    正确答案:A

  • 第14题:

    已知有结构体: struct sk { int a; float b; }data,*p; 若有p=&data,则对data的成员a的正确引用是( )。

    A.(*p).data.a

    B.(*p).a;

    C.p->data.a

    D.p.data.a


    正确答案:B
    解析:本题主要考查结构指针:p=&data,访问结构体的成员,可以通过结构变量访问,即data.a,也可以用等价的指针形式:(*p).a和p->a来访问结构体变量中的成员。

  • 第15题:

    设有如下定义: 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=a;


    正确答案:C
    解析:要注意不能将结构体变量作为一个整体进行输入和输出,只能对结构体变量中的各个成员进行输入和输出。引用结构体变量中成员的方式有以下几种:结构体变量名.成员名;指针变量名->成员名;(*指针变量名).成员名。

  • 第16题:

    设有如下定义: 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;


    正确答案:C

  • 第17题:

    若有如下说明和定义struct test{ int ml; char m2; float m3; union uu {char ul[5]; int u2[2];} ua;} myaa;则sizeof(struct test)的值是A.12 B.16 C.14 D.9


    正确答案:A
    在本题中,首先定义了一个结构体。在该结构体中,定义了一个整型变量成员、一个字符型变量成员和一个浮点型变量成员,并在结构体中定义了一个联合体变量成员,联合体变量成员中又包含两个联合体成员数组。题目最后要求计算该结构体变量所占的存储空间。
    在C语言中,联合体变量中的所有成员共享存储空间,联合变量的长度等于各成员中最长的长度,因此,本题的联合体部分所占的长度为5,但是结构体与联合体不一样的是,结构体不能共享空间,一个结构体变量的总长度是各成员长度之和,因此,该结构体所需的存储空间为5+1+2+4=12。本题的正确答案选A。

  • 第18题:

    若有以下结构体定义,则______是正确的引用或定义。 struct example { int x; int y; }v1;

    A.example.x=10

    B.example v2.x=10

    C.struct v2;v2.x=10

    D.struct example v2={10};


    正确答案:D
    解析:在定义结构体变量时,不能只用结构体名example或关键字struct进行定义,必需要用结构体类型名structexample定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。

  • 第19题:

    设有如下定义:

    struct sk

    { int n;

    float x; } data, *p;

    若要使p指向data中的n域,正确的赋值语句是

    A.p=&data.n;

    B.*p=data.n;

    C.p=(struct sk*)&data.n;

    D.p=(struct sk*)data.n;


    正确答案:C
    解析:本题主要考查了结构体变量引用成员数据的方法,主要有以下几种:结构体变量名.成员名或结构体指针->成员名的方法来引用结构体成员。

  • 第20题:

    若有以下结构类型说明和变量定义,则变量a在内存中所占字节数是struct stud{ char num[6]; int s[4]; double ave;}a,*p;


    正确答案:22
    对于结构stud来说,char  num[6];占6个字节;int s[4];占2´4 = 8个字节;double ave;占8个字节;所以a占的字节数为6+8+8=22个字节。

  • 第21题:

    设有定义:struct sk {int a;float b;} data,* p; 若有p=& data;,则对data中的a域的正确引用是 ( )

    A.(* p).data.a

    B.(* p).a

    C.p->data.a

    D.p.data.a


    正确答案:B

  • 第22题:

    若有如下定义和声明: struct s { int m;char ch;double x; union t {char a[6];int b[3];}tt;}ss; 则sizeof(struets)的值是( )

    A.6

    B.14

    C.17

    D.20


    正确答案:C

  • 第23题:

    单选题
    若有如下定义:  struct sk{      int a;  int b;  }data,*p=&data;  则对data中的成员x的正确引用的是()。
    A

    (*p).a

    B

    (*p).data.a

    C

    p->data.a

    D

    p.data.a


    正确答案: A
    解析: 暂无解析