C语言指针练习及答案讲解
本文将对C语言指针进行详细的讲解,并提供相关的练习题和答案。指针是C语言中的一种重要的数据类型,用于存储变量的地址或指向其他变量。正确地使用指针是编程的关键一步。
7.1 选择题
1. 若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(D)。
答案:D. q=a;
解释:a 是整型数,int *p,*q 定义了指针,p,q 是指向整型的指针。p 取得 a 的地址,而 q 取得 p 的地址p,q 是指针(也就是一个地址),而*p 和*q 是这个指针指向的整型数值(存放在这个地址的值)。
2. 若定义:int a=511, *b=&a;,则 printf("%d\n", *b);的输出结果为:
答案:D. 511
解释:int a=511,*b=&a; a 是整形变量b 是整形指针变量,指向 a printf("%d\n",*b);就是输出指针变量 b 的值,即 a 的值。
3. 已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是 (B)。
答案:B. p1=a;
解释:p1 p2 是指针,a 是整型变量,变量怎么可以赋值给指针呢?
4. 变量的指针,其含义是指该变量的(B)。
答案:B. 地址
解释:变量的指针是指该变量的地址。
5. 若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别赋给变量 a、b、c 的语句是(A)。
答案:A. scanf("%d%d%d", &a, &b, d);
解释:对于 int c,*d=&c;,c 是一整型数据, d 是一指针,它指向变量c(即 d=&c,*是指针类型的说明符), 所以,输入c 的值可以用scanf("%d",&c); 也可以用scanf("%d",d);
6. 若已定义 int a=5; 下面对(1)、(2)两个语句的正确解释是(D)。
答案:D. (1) 在对 p 进行说明的同时进行初始化,使p 指向 a; (2)将变量 a 的值赋予 *p。
解释:(1) 在对 p 进行说明的同时进行初始化,使p 指向 a; (2)将变量 a 的值赋予 *p。
7. 若有语句 int *p, a=10; p=&a; 下面均代表地址的一组选项是(D)。
答案:D. &a, &*p, p
解释:int *p 是定义一个指针, p=&a ,p 指向 a 的地址, *p=a, * 指针名 是指取该指针所指地址中的内容,&a 为 a 的地址, &*p=&a,p 中放的为 a 的地址。
8. 若需要建立如图所示的存储结构,且已有说明double *p, x=0.2345; 则正确的赋值语句是(B)。
答案:B. p=&x;
解释:p=&x; 是将 p 指向 x 的地址。
本文提供了C语言指针的详细讲解和相关练习题,旨在帮助读者更好地理解和掌握指针的使用。