内容正文:
专题十九 指向简单变量的指针
1、 选择题
1.分析下面函数,以下说法正确的是( )。
swap(int *p1,int *p2)
{ int *p;
*p=*p1;
*p1=*p2;
*p2=*p;
}
A.交换*p1和*p2的值
B. 正确,但无法改变*p1和*p2的值
C. 交换*p1和*p2的地址
D. 可能造成系统故障,因为使用了空指针
2.变量的指针,其含义是指该变量的( )
A. 值
B. 地址
C. 名
D. 一个标志.
3.若有以下定义和语句:
double r=99 , *p=&r ;
*p=r ;
则以下正确的叙述是( )。
A. 以上两处的*p 含义相同,都说明给指针变量p 赋值
B. 在"double r=99,*p=&r;"中,把r 的地址赋值给了p 所指的存储单元
C. 语句"*p=r;"把变量r 的值赋给指针变量p
D. 语句"*p=r;"取变量r 的值放回r 中
4.对于类型相同的两个指针变量之间,不能进行的运算是 。
A. <
B. =
C. +
D. –
5.以下程序中调用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是一个指针变量
6.若有语句int *p, a=10; p=&a;下面均代表地址的一组选项是( )。
A. a, p,*&a
B. &*a, a,*p
C. *&p, *p, &a
D. &a, &*p, p
二、简答题
1.读程序题,写出程序运行的结果。
#include <stdio.h>
void main()
{ int *p1,*p2,*p;
int a=5,b=8;
p1=&a;
p2=&b;
if(a<b)
{ p=p1;
p1=p2;
p2=p;
}
printf("%d,%d
",*p1,*p2);
printf("%d,%d
",a,b);
}
2. 写出下列程序的输出结果
#include <stdio.h>
main{ )
{ int *p,a=10,b=1;
p= &a;
a=*p+b;
printf("%d" ,a);
}
原创精品资源学科网独家享有版权,侵权必究!
$$
专题十九 指向简单变量的指针
1、 选择题
1.分析下面函数,以下说法正确的是( )。
swap(int *p1,int *p2)
{ int *p;
*p=*p1;
*p1=*p2;
*p2=*p;
}
A. 交换*p1和*p2的值
B. 正确,但无法改变*p1和*p2的值
C. 交换*p1和*p2的地址
D. 可能造成系统故障,因为使用了空指针
答案:D
解析:指针变量p未指向某个空间,为空指针,编译不通过。
2.变量的指针,其含义是指该变量的( )
A. 值
B.地址
C.名
D.一个标志.
答案:B
解析:本题考察指针的概念,变量的指针即为该变量的地址。
3.若有以下定义和语句:
double r=99 , *p=&r ;
*p=r ;
则以下正确的叙述是( )。
A. 以上两处的*p 含义相同,都说明给指针变量p 赋值
B. 在"double r=99,*p=&r;"中,把r 的地址赋值给了p 所指的存储单元
C. 语句"*p=r;"把变量r 的值赋给指针变量p
D. 语句"*p=r;"取变量r 的值放回r 中
答案:D
解析:double r=99 , *p=&r;是将r的地址存入指针变量p中;而*p=r;语句是将r的值赋值给p所指向的内存空间。
4.对于类型相同的两个指针变量之间,不能进行的运算是 。
A. <
B. =
C. +
D. –
答案:A
解析:指针变量存放的是地址,地址不能进行比较。
5.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其锴误原因是( )
main( )
{int*p