一、单项选择题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. 若int x ,*pb; ,则正确的赋值表达式是 。 A. pb=&x B. pb=x; C. *pb=&x; D. *pb=*x 3. 有如下程序段 int *p ,a=10 ,b=1 ; p=&a ; a=*p+b ; 执行该程序段后,a 的值为 。 A. 12 B. 11 C. 10 D. 编译出错 4. 若有以下定义和语句: 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