选择题   若有定义:int x, *pb;,则正确的赋值表达式是______。
 
【正确答案】 A
【答案解析】本题的定义语句中,在pb的前面有一个*号说明符,表示pb是一个指针变量,按规定,在指针变量中只能存放存储单元(即变量)的地址。在定义语句中的类型名int说明了pb的基类型为int,因此pb中只能存放int类型变量的地址,即pb只能指向int类型的变量。已定义x为int类型变量,若其中已存放了整型数,则选项B中的赋值表达式pb=x企图把一个整数放到一个指针变量中,这是不允许的(赋值不兼容)。在C程序中,&号是求地址运算符,表达式&x的值是变量x在内存中的地址,而*号是间址运算符(与说明语句中的说明符*号的含义不同)。 在选项C中,若pb已指向了一个整型变量(已放入了某整型变量的地址),则*pb就代表了此整型变量,所以赋值表达式*pb=&x企图把一个地址值放入到一个整型变量中,这是不允许的,地址值不可能转换为一个整数。 间址运算符只能用于指针变量。在选项D中,赋值表达式右边出现了*x,把间址运算符*号用于一个整型变量是错误的。按定义,pb是一个指针变量,且只能存放int类型变量的地址,表达式&x取int型变量x的地址,表达式pb=&x把x的地址赋给了指针变量pb,所以选项A中的表达式是正确的。应掌握:①指针的定义方法;②指针变量的基类型;③所定义的指针变量中允许存放何种类型变量的地址;④求地址运算符(&)的正确运用;⑤间址运算符(*)的正确运用。若pb的基类型为double,则应掌握*pb出现在赋值号右边的含义是什么,出现在赋值号左边的含义又是什么。