更多“若有以下说明和语句:struct st{int n;char * ch;};struct st a[3]={5,"abc",7,"def",9,"ghk"},*p ”相关问题
  • 第1题:

    若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是( )。Struct stu{ int i; int name;}st,*p;p=&st;

    A.st.i

    B.*p.i

    C.(*p).i

    D.p->i


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

  • 第2题:

    若有以下说明和语句: struct st{int n;char *ch;}; struct st a[3]{5,"abc",7,"def",9,"ghk"},*p=a 则值为6的表达式是______。

    A.p++->n

    B.p->n++

    C.(*p).n++

    D.++p->n


    正确答案:D
    解析:根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的一个元素所占的字节数,即p++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再执行自加1运行,结果为6。

  • 第3题:

    若有以下定义和语句 struct a { int n,m;}; struct a st[3]={{1,20},{2,19},{3,21}}; struct a*p=st; 则以下错误的引用是

    A.(p++)->n;

    B.st[0].n;

    C.(*p).n;

    D.p=&st.m;


    正确答案:D
    解析:可以用以下三种形式来引用结构体变量中的成员:结构体变量名.成员名、指针变量名->成员名和(*指针变量名).成员名。选项D)中“&st.m”取的是结构体中成员的地址而不是结构的地址。

  • 第4题:

    若有以下说明和语句: struct st{int n;char *ch;}; struct st a[3]={5,"abc",7,"def",9,"ghk"},*p=a; 则值为6的表达式是______。

    A.p++->n

    B.p->n++

    C.(*p).n++

    D.++p->n


    正确答案:D
    解析:根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的一个元素所占的字节数,即p++使P由a[0]指向a[1]超始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为P指向数组a起始地址,p->n的值为5,再执行自加1运行,结果为6。

  • 第5题:

    若有以下说明和语句: struct st{int n;char*ch;}; struct st a[3]={5,"abc",7,"def",9,"ghk"},*p=a; 则值为6的表达式是______。

    A.p++->n

    B.p->n++

    C.(*p).n++

    D.++p->n


    正确答案:D
    解析:根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的一个元素所占的字节数,即p++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再掏打自加1运行,结果为6。