内容正文:
编写说明:《软件与应用技术考纲百套卷》依据山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是《软件与应用技术考纲百套卷》的第12卷,按知识模块1 C语言程序设计知识6.指针的两点范围要求编写。其两点要求是:
(1)了解指针变量的定义及引用。
(2)理解指向数组的指针变量。
山东省《软件与应用技术考纲百套卷》 第12卷
知识模块1 C语言程序设计知识
6.指针 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. C语言中,下列哪个关键字用于声明变量指向函数?( )
A. function
B. func
C. pointer
D. void
2.设 `pl` 和 `p2` 均为指向一个 `int` 型数组的指针变量,`x` 为 `int` 型变量,则以下不能正确执行的赋值语句是( )。
A. `x=*pl+*p2;`
B. `p2=x;`
C. `pl=p2;`
D. `x=*pl*(*p2);`
3.若已定义 `a` 为 `int` 型变量,则( )是对指针变量 `p` 的正确定义和初始化。
A. `int *p=a;`
B. `int*p=*a;`
C. `int p=&a;`
D. `int *p=&a;`
4.假设整型变量 `a` 的值为 2, `a` 的地址为 2000,若使 `p` 为指向 `a` 的指针变量,则以下赋值正确的是( )。
A. `&a=3;`
B. `*p=2;`
C. `*p=2000;`
D. `p=&a;`
5.若有定义 `int n=2,*p=&n,*q=p;` 则以下非法的赋值语句是( )。
A. `p=q;`
B. `*p=*q;`
C. `n=*q;`
D. `p=n;`
6.若有定义 `int*p,m=6,n;` 以下正确的程序段是( )。
A. `p=&n;scanf("%d",&p);`
B. `p=&n;scanf("%d",p);`
C. `scanf("%d",&n);*p=n;`
D. `p=&n;*p=m;`
7.以下程序中调用 `scanf` 函数给变量 `a` 输入数值的方法是错误的,其错误原因是( )。
main()
{int *p,*q,a,b;
p=&a;
printf("input a:");
scanf("%d",*p);
………
A. `*p` 表示的是指针变量 `p` 的地址
B. `*p` 表示的是变量 `a` 的值,而不是变量 `a` 的地址
C. `*p` 表示的是指针变量 `p` 的值
D. `*p` 只能用来说明 `p` 是一个指针变量
8. 下列哪个操作符用于对指针进行自减操作?( )
A. ++
B. --
C. +=
D. -=
9. 假设有以下声明:`int a, *p = &a;`,下列哪个表达式是正确的?( )
A. *p = &a;
B. p = *a;
C. *p = a;
D. &p = a;
10. 在C语言中,下列哪个关键字用于声明一个指向函数的指针?( )
A. function
B. func
C. pointer
D. void
11. 假设有以下声明:`int (*p)[10];`,下列哪个表达式是正确的?( )
A. p = &arr;
B. p = arr;
C. p = &arr[0];
D. p = arr[0];
12. 下列哪个操作符用于访问结构体成员?( )
A. .
B. ->
C. *
D. &
13. 假设有以下声明:`int arr[10], *p = arr;`,下列哪个表达式是正确的?( )
A. *(p + 2) = 5;
B. *(2 + p) = 5;
C. *p(2) = 5;
D. p(2) = 5;
14. 下列哪个函数用于释放动态分配的内存?( )
A. free()
B. delete
C. dealloc()
D. release()
15. 在C语言中,下列哪个关键字用于声明一个指向字符的指针?( )
A. char
B. int
C. float
D. void
16. 假设有以下声明:`int a, *p = &a;`,下列哪个表达式是正确的?( )
A. *p = &a;
B. p = *a;
C. *p = a;
D. &p = a;
17. 下列哪个操作符用于对指针进行加法操作?( )
A. ++
B.