以下是后面例题所涉及到的文章,如果有不会的可以点击查看
自定义类型结构体(上)
自定义类型结构体(中)
自定义类型结构体(下)
例题一
struct student
{
int num;
char name[32];
float score;
}stu;
A.struct 是结构体类型的关键字
B.struct student 是用户定义的结构体类型
C.num, score 都是结构体成员名
D.stu 是用户定义的结构体类型名
例题解析
struct student是一个独一无二的结构体类型,而每个结构体都必须要有一个struct来作为一个关键字
结构体的成员就是结构体括号内num score(name[32]是结构体变量)
对于用户定义的结构体类型名,我们需要用到typedef,这里的stu其实是定义的结构体的类型变量
答案
答案 D
例题二
结构体访问成员的操作符不包含:( )
A. . 操作符
B -> 操作符
C * 解引用操作符
D sizeof
例题解析
注意这里是结构体访问成员的操作付,是访问成员
.操作符是结构体类型变量访问结构体中成员时
->操作符是指向结构体类型变量的指针访问结构体中成员时,就是通过找到地址去访问
指向结构体类型变量的指针也可以通过.方式访问成员,只不过要先通过*对该指针解引用
对于sizeof虽然是操作符,但是并不是访问成员的操作符
答案
答案 D
例题三
下面程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是( )
#include < stdio.h >
struct S
{
int a;
int b;
};
int main( )
{
struct S a1, *p=&a1;
a1.a = 99;
printf( "%d\n", __________);
return 0;
}
A.a1.a
B.*p.a
C.p->a
D.(*p).a
例题解析
这道题关键就是在于符号的优先级,下面是关于优先级顺序的图片


对于a1.a,a1是结构体类型变量,因此a1.a其实就是结构体成员a
对于*p.a,这里就需要用到优先级了,*操作符的优先级是低于.操作符的,所以 * p.a其实可以这样写成 * (p.a),显然是有问题的
p->a就是通过找到地址去访问结构体成员a
(*p).a其实就是等价于(a1).a
答案
答案 B
例题四
下面程序的输出结果是:( )
struct stu
{
int num;
char name[10];
int age;
}

最低0.47元/天 解锁文章
2491

被折叠的 条评论
为什么被折叠?



