第七章  指针
71 选择题
1 若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是()。
A p=q;          B *p=*q;        C a=*q;        D q=a;
2 若定义:int a=511, *b=&a;,则printf("%d\n", *b);的输出结果为:
  A 无确定值      B a的地址      C 512          D 511
3 已有定义 int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是()。
A a=*p1+*p2;    B p1=a;          C p1=p2;        D a=*p1*(*p2);
4 变量的指针,其含义是指该变量的()。
A             B 地址          C             D 一个标志
5 若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别赋给变量abc的语句是()。
A scanf("%d%d%d", &a, &b, d);
B scanf("%d%d%d", a, b, d);
C scanf("%d%d%d", &a, &b, &d);     
D scanf("%d%d%d", a, b,*d);
6 若已定义int a=5; 下面对(1)、(2)两个语句的正确解释是()。
(1) int *p=&a;                  (2) *p=a;
A 语句(1)和(2)中的*p含义相同,都表示给指针变量p赋值。
B (1)(2)语句的执行结果,都是把变量a的地址值赋给指针变量p
C (1)在对p进行说明的同时进行初始化,使p指向a
(2)变量a的值赋给指针变量p
D (1)在对p进行说明的同时进行初始化,使p指向a
  (2)将变量a的值赋予*p
7 若有语句int *p, a=10; p=&a; 下面均代表地址的一组选项是()。
A a, p, *&a                            B &*a, &a, *p
C *&p, *p, &a                          D &a, &*p, p
8 若需要建立如图所示的存储结构,且已有说明double *p, x=0.2345; 则正确的赋值语句是()。
               
A p=x;                                B p=&x;
C *p=x;                                D *p=&x;
9 若有说明:int *p, a=1, b; 以下正确的程序段是()。
A p=&b;                                B scanf("%d", &b);
scanf("%d", &p);                            *p=b;
C p=&b;                                D p=&b;
scanf("%d", *p);                            *p=a;
10.有如下语句:int m=6, n=9, *p, *q; p=&m; q=&n; 如图1sizeof是什么所示,若要实现下图所示的存储结构,可选用的赋值语句是()。
       
    A *p=*q;                                B p=*q;
    C p=q;                                 D *p=q;
11.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。