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

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

可用S定义结构体变量

B

可用T定义结构体变量

C

S是struct类型的变量

D

T是struct S类型的变量

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

以下结构体类型说明和变量定义中正确的是

A)typedef struct

{int n; char c;} REC;

REC t1,t2;

B)struct REC;

{int n; char c;};

REC t1,t2;

C)typedef struct REC ;

{int n=0; char c='A';} t1,t2

D)struct

{int n;char c;}REC;

REC t1,t2;


正确答案:A

第2题:

设有以下说明语句

typedef struct

{ int n;

char ch[8];

} PER;

则下面叙述中正确的是

A.PER 是结构体变量名

B.PER是结构体类型名

C.typedef struct 是结构体类型

D.struct 是结构体类型名


正确答案:B
解析:本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。

第3题:

设有以下语句

typedef struct TT

{char c,int a[4];} CIN;

则下面叙述中正确的是

A) 可以用 TT 定义结构体变量

B)TT 是 struct 类型的变量

C) 可以用 CIN 定义结构体变量

D)CIN 是 struct TT 类型的变量


正确答案:C
答案 C
解析:在 C 语言中, typdef 用于说明一种新的类型名,本题中的 CIN 被定义为一种新的类型名,我们可以用它来定义一个结构体变量。

第4题:

设有以下语句: typedef struct S { int g; char h; } T; 则下面叙述中正确的是( )。

A.可以用S定义结构体变量

B.可以用T定义结构体变量

C.S是struct类型的变量

D.T是stnictS类型的变量


正确答案:B
解析:本题使用typedef关键字将整个结构体的定义部分stmctS{intg;charh;}声明为别名T。此时T是一个结构体类型,可以直接使用T声明该结构体变量,而S只是一个结构体名,必须结合struct关键字才能声明变量。故本题的正确答案为B。

第5题:

设有以下语句: typedef street S { int g; char h;} T;则下面叙述中正确的是( )。

A.可用S定义结构体变量

B.可以用T定义结构体变量

C.S是struct类型的变量

D.T是struct S类型的变量


正确答案:B
解析:可以用typedef定义新的类型名来代替已有的类型名。T是所定义的新的类型名,它代表题中定义的一个结构体类型,这样就可以用T定义结构体变量了。

第6题:

以下结构体类型说明和变量定义中正确的是( )。

A.typedef struct

B.struct REC; {int n;char c;}REC; {int n;char c;}; REC t1,t2; REC t1,t2;

C.typedef struct REC;

D.struct {int n=0;char c='A';}t1,t2; {int n;char c;}REC; REC t1,t2;


正确答案:A
解析:选项A中用typedef定义结构体类型名REC后,REC能够唯一地标识这种结构体类型,可以用REC定义变量,这是正确的结构体类型变量的定义,选项C是错误的。选项B中“struct REC;”后面不应该加分号。选项D中的结构体是一个无名结构体类型,REC是结构体变量,不是结构体类型,因此不能用来定义结构体变量。

第7题:

有以下程序includestruct STU{char name[10];int num;};void f(char*name, intnum){s

有以下程序 #include <string.h> struct STU { char name[10]; int num; }; void f(char *name, int num) { struct STU s[2]={{"SunDan",20044},{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() { struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p; p=&s[1]; f(p->name,p->num); printf("%s %d\n",p->name,p->num); } 程序运行后的输出结果是

A.SunDan 20042

B.SunDan 20044

C.LiSiGuo 20042

D.YangSan 20041


正确答案:A
解析:题目中定义的函数f()包含两个参数,一个字符指针,—个整型变量。当修改参数指针所指向的内容的时候,实参所指的内容也被修改,即传址调用;但只是修改参数变量的内容,则实奉不受影响,即传值调用。因此,主函数调用f()函数后,第1个参数被修改成函数中s[0]的name成员,第2个参数不受影响,还是主函数中s[1]的num成员。故最终输出SunDan20042。应该选择A。

第8题:

有以下程序段

typedef struct node { int data; struct node *next; } *NODE;

NODE p;

以下叙述正确的是

A)p 是指向 struct node 结构变量的指针的指针

B)NODE p ;语句出错

C)p 是指向 struct node 结构变量的指针

D)p 是 struct node 结构变量


正确答案:C

第9题:

有以下程序 include typedef struct { int num;double s; }REC; void funl(REC *x) { x

有以下程序 include<stdio.h> typedef struct { int num;double s; }REC; void funl(REC *x) { x->num=23;x->s=88.5; } void main() { REC a={16,90.0}; fun1(&A); printf("%d\n",a.num); } 程序运行后的输出结果是( )。


正确答案:23
23

第10题:

有以下程序: include struct STU (char name[10]; int num; };

有以下程序: #include <string.h> struct STU (char name[10]; int num; }; void f(char *name, int num) {struct STU s[2]={{"SunDan",20044}.{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() {struct STU s[2]={{"YangSall",20041},{"LiSiGao",20042}},*p;p=&s[1]; f(p->name,p->num); printf("%s%d\n",p->name,p->num); } 程序运行后的输出结果是 ______。

A.SunDan 20042

B.SunDan 20044

C.LiSiGuo 20042

D.YangSan 20041


正确答案:A
解析:本题主函数中定义了结构体类型的指针变量p,并使其指向了结构体类型的数组s[1],并通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了主函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就是刘主函数中p->name的改变,而函数f中对形参num的改变并不会影响主函数中p->num的值,因为此时传递给num的是一个值,而不是地址。

更多相关问题