🌏博客主页:PH_modest的博客主页
🚩当前专栏:每日反刍
💌其他专栏:
🔴 每日一题
🟢 读书笔记
🟡 C语言跬步积累
🌈座右铭:广积粮,缓称王!
一.结构体基础知识
1.题目
有如下代码:
struct student
{
int num;
char name[32];
float score;
}stu;
则下面的叙述不正确的是:( )
A.struct 是结构体类型的关键字
B.struct student 是用户定义的结构体类型
C.num, score 都是结构体成员名
D.stu 是用户定义的结构体类型名
2.答案
D
3.分析
A:正确,在C语言中需要自定义类型时,要用到struct关键字
B:正确:在C语言中,用struct定义的结构体,定义结构体类型变量时,需要用struct student,struct student stu1={...};
这段代码可以和int a=0;
进行比较,struct student可以看成int,stu1可以看成a,即struct student是一种类型(结构体类型),stu1是定义的一种变量(结构体类型变量)
C:正确:结构体中的变量名称,称之为结构体的成员
D :错误:stu是定义的结构体类型变量,不是名称,如果想要让stu为结构体类型名称时,必须在结构体定义时添加 typedef关键字
二.结构体成员的访问
1.题目
结构体访问成员的操作符不包含:( )
A… 操作符
B.-> 操作符
C.* 解引用操作符
D.sizeof
2.答案
D
3.分析
这题选出正确答案非常简单,但我想再强调一下这几个操作符应如何使用
三.指针运算
1.题目
下面关于指针运算说法正确的是:( )
A.整形指针+1,向后偏移一个字节
B.指针-指针得到是指针和指针之间的字节个数
C.整形指针解引用操作访问4个字节
D.指针不能比较大小
2.答案
C
3.分析
注意:此题是有问题的,说法不严谨,如果将整形指针理解成int*类型的指针,那么一下说法解析如下
A:错误,整形指针+1,向后移动一个整形类型的大小,即4个字节
B:错误,两个指针相减,指针必须指向一段连续空间,减完之后的结构代表两个指针之间相差元素的个数
C:正确,整形指向的是一个整形的空间,解引用操作访问4个字节
D:指针中存储的是地址,地址可以看成一个数据,因此是可以比较大小的
四.结构体成员的访问
1.题目
下面程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是( )
#include < stdio.h >
struct S
{
int a;
int b;
};
int main( )
{
struct S a, *p=&a;
a.a = 99;
printf( "%d\n", __________);
return 0;
}
A.a.a
B.*p.a
C.p->a
D.(*p).a
2.答案
B
3.分析
结构体类型变量需要访问其成员时,用.运算符,如果是指向结构体变量的指针访问时,需要用->,或者先对指针解引用,取到指向的结构体类型的变量,再通过.访问,但是要注意优先级
最后
本系列主要是分享好题和错题,方便平时反刍,反复练习才能真正掌握一个知识点。
我始终相信广积粮,缓称王!