C语言习题~day15

简介: 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^
|
1天前
|
C语言
C语言习题~day39
C语言习题~day39
TU^
4 0
C语言习题~day39
TU^
|
1天前
|
存储 C语言
C语言习题~day38
C语言习题~day38
TU^
2 0
TU^
|
1天前
|
C语言
C语言习题~day37
C语言习题~day37
TU^
3 0
TU^
|
1天前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
7 1
TU^
|
1天前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
7 1
TU^
|
1天前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
6 1
TU^
|
1天前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
7 1
TU^
|
1天前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
7 1
TU^
|
1天前
|
编译器 C语言
C语言习题~day31
C语言习题~day31
TU^
6 2
TU^
|
1天前
|
C语言
C语言习题~day30
C语言习题~day30
TU^
5 1