- 2
- 0
- 约3.33万字
- 约 46页
- 2026-01-31 发布于河南
- 举报
2026年c语言考试题库100道
第一部分单选题(100题)
1、在默认对齐方式下,结构体structtest{chara;intb;}的大小是()字节。
A.4
B.5
C.6
D.8
【答案】:D
解析:本题考察结构体对齐规则。结构体成员需按“自身大小的整数倍”对齐:chara占1字节(偏移0),intb占4字节,需从偏移4的位置开始(因1字节后偏移1、2、3为填充字节,共3字节填充),因此总大小为1(a)+3(填充)+4(b)=8字节。选项A错误(忽略对齐填充),选项B错误(错误计算为1+4=5),选项C错误(错误计算为1+3+2=6)。
2、执行以下代码后,*p的值为()。
inta=10;int*p=a;p++;
A.10
B.不确定(随机值)
C.0
D.编译错误
【答案】:B
解析:本题考察指针自增与内存访问。指针p初始指向变量a(地址为a),执行p++后,p指向a后相邻的内存单元(地址偏移量为sizeof(int),假设int为4字节,则p指向a后4字节的位置)。该位置的内存数据未被初始化,C语言不保证其值,因此*p结果为不确定的随机值。选项A错误(p++后不再指向a),选项C错误(无逻辑依据),选项D错误(指针自增是合法操作,无编译错误)。
3、以下关于C语言变量作用域的说法,正确的是?
A.全局变量的作用域仅限于定义它的文件
B.局部变量在函数执行结束后仍可访问
C.若局部变量与全局变量同名,局部变量在其作用域内优先
D.static修饰的局部变量作用域与全局变量相同
【答案】:C
解析:本题考察变量作用域知识点。A错误,全局变量默认作用域为整个程序(通过extern可跨文件访问),仅static修饰的全局变量作用域限于定义文件;B错误,局部变量作用域仅在函数/代码块内,函数结束后不可访问;C正确,局部变量与全局变量同名时,局部变量在其作用域内会覆盖全局变量;D错误,static修饰的局部变量作用域仍为函数内,仅生命周期延长至程序结束,与全局变量作用域不同。
4、以下代码中,正确定义指针数组的是?
A.int*arr[5];
B.int(*arr)[5];
C.int*arr[5]={1,2,3,4,5};
D.int(*arr)[5]={1,2,3,4,5};
【答案】:A
解析:A正确,指针数组是数组元素为指针的数组,int*arr[5]定义了包含5个int型指针的数组。B错误,int(*arr)[5]是数组指针(指向数组的指针),arr是指向int[5]数组的指针,而非指针数组。C错误,指针数组的元素应为指针类型,而{1,2,3,4,5}是int常量,赋值时类型不匹配(int*无法指向int常量)。D错误,arr是数组指针,初始化时需传入int[5]数组的地址(如inta[5]={1,2,3,4,5};arr=a;),而{1,2,3,4,5}是初始化列表,无法直接赋值给数组指针。
5、在C语言中,若全局变量和局部变量同名,以下说法正确的是?
A.局部变量会覆盖全局变量,局部作用域内优先使用局部变量
B.全局变量会覆盖局部变量,全局作用域内优先使用全局变量
C.编译时会报错,提示变量重复定义
D.运行时会出现不可预测的错误
【答案】:A
解析:本题考察全局变量与局部变量的作用域覆盖规则。C语言中,局部变量的作用域优先于全局变量,同名时局部变量会隐藏全局变量,优先使用局部变量(A正确)。B错误,因为局部变量作用域内优先;C错误,不同作用域的同名变量不会导致重复定义;D错误,这种情况仅涉及作用域覆盖,无运行时错误。
6、已知inta[4]={10,20,30,40};int*p=a;执行p+=2;后,*p的值是?
A.10
B.20
C.30
D.40
【答案】:C
解析:本题考察指针与数组的关系及指针运算。数组名a是数组首元素的地址,int*p=a;使p指向a[0]。指针运算p+=2表示p向后移动2个int类型的长度(每个int占4字节,此处简化为移动2个元素位置),因此p此时指向a[2],*p即为a[2]的值30。A选项错误,p初始指向a[0],p+=2后指向a[2],值为30而非10;B选项错误,p+=2后指向a[2],值为30而非20;D选项错误,p+=2后指向a[2],值为30而非40。
7、以下关于数组名作为函数参数的描述,正确的是?
A.数组名作为参数时,传递的是数组的首地址
B.数组名作为参数时,传递的是数组的所有元素
C.数组名作为参数时,会退化为i
原创力文档

文档评论(0)