C语言习题~day15

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: C语言习题

1.下列程序段的输出结果为( )

unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
pulPtr = pulArray;
*(pulPtr + 3) += 3;
printf("%d,%d\n",*pulPtr, *(pulPtr + 3));

A.9,12

B.6,9

C.6,12

D.6,10

unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
pulPtr = pulArray; // 数组名代表数组首元素地址,因此pulptr指向的是数组中第一个元素的位置
*(pulPtr + 3) += 3; // pulptr+3访问的是数组中第三个元素(数组下标从0开始),故将9改为9+3=12
printf("%d,%d\n",*pulPtr, *(pulPtr + 3)); // 打印第一个和第三个元素,因此:打印6和12

因此:选择C

2.下面关于指针运算说法正确的是:( )

A.整形指针+1,向后偏移一个字节


B.指针-指针得到是指针和指针之间的字节个数


C.整形指针解引用操作访问4个字节


D.指针不能比较大小


答案解析:


注意:此题是有问题的,说法不严谨,如果将整形指针理解成int*类型的指针,那么一下说法解析如下


A:错误,整形指针+1,向后便宜一个整形类型的大小,即4个字节


B:错误,两个指针相减,指针必须指向一段连续空间,减完之后的结构代表两个指针之间相差元素的个数


C:正确,整形指向的是一个整形的空间,解引用操作访问4个字节


D:指针中存储的是地址,地址可以看成一个数据,因此是可以比较大小的


因此:选择C

3.以下关于指针的说法,正确的是( )

A.int *const p与int const *p等价


B.const int *p与int *const p等价


C.const int *p与int const *p等价


D.int *p[10]与int (*p)[10]等价


答案解析:


A:错误,int* const p中,const修饰指针变量p本身,表示p的指向不能改变,


 int const *p中,const修饰p指针解引用之后的结果,表示p指向的内容不能改变


 因此,不等价


B:错误,同上


C:正确,const都修饰p指针解引用之后的结果,表示p指向的内容不能改变


D:错误,int *p[10]定义了一个指针数组,数组中10个元素,每个元素都是int*类型的指针


 int (*p)[10]定义了一个数组指针,该指针只能指向存储10个整形元素的数组


因此:选择C

4.C语言中哪一种形式声明了一个指向char类型变量的指针p,p的值不可修改,但p指向的变量值可修改?( )

A.const char *p


B.char const *p


C.char*const p


D.const char *const p


答案解析:


A:错误,const修饰*p,表示p指向的内容不能修改


B:错误,同上


C:正确,const修饰p本身,表示p的指向不能修改,p指向的空间中内容可以修改


D:错误,第一个const表示p指向的内容不能修改,第二个const表示p不能指向其他变量


因此,选择C

5.以下哪个操作可以避免野指针的出现?

A.使用空指针(NULL)初始化指针变量

B.在指针释放后将其设置为NULL

C.确保指针始终指向有效的内存地址

D.检查指针的有效性后再进行访问

全对

6..以下哪个描述最符合野指针的含义?

A.指向已被释放的内存空间的指针

B.指向堆栈中的局部变量的指针

C.指向全局变量的指针

D.指向动态分配的内存的

A

7.下面关于assert宏的描述哪个是正确的?

A.assert宏总是会终止程序的执行

B.assert宏仅在调试模式下起作用

C.assert宏只能用于整数类型的表达式

D.assert宏可以通过编译选项进行启用或禁用

D

8.能把函数处理结果的2个数据返回给主调函数,在下面的方法中不正确的是:( )

A.return 这2个数


B.形参用数组


C.形参用2个指针


D.用2个全局变量


答案解析:


A:错误,一个函数只能返回一个结果


B:正确,将形参存在数组中,修改数组中内容,可以通过数组将修改结果带出去


C:正确,形参如果用指针,最终指向的是外部的实参,在函数中对指向指向内容进行修改,改变的就是外部的实参


D:正确,全局变量不受函数的结束而结束,在函数中改变全局变量,主调函数中可以看到改变之后的结果


因此,选择A


目录
相关文章
TU^
|
4月前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
26 1
|
2月前
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
54 0
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
TU^
|
4月前
|
编译器 C语言
C语言习题~day31
C语言习题~day31
TU^
20 2
TU^
|
4月前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
36 1
TU^
|
4月前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
25 1
TU^
|
4月前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
23 1
TU^
|
4月前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
16 1
TU^
|
4月前
|
C语言
C语言习题~day30
C语言习题~day30
TU^
22 1
TU^
|
4月前
|
自然语言处理 C语言 C++
C语言习题~day29
C语言习题~day29
TU^
18 1
TU^
|
4月前
|
存储 C语言
C语言习题~day28
C语言习题~day28
TU^
18 1