问题 单项选择题

以下选项中,正确运用指针变量的程序段是( )。

A.int*i=NULL;

B.float*f=NULL;
scanf("%d",i); *f=10.5;

C.char t='m',*C=&t;

D.long*L;
*C=&t; L='0';

答案

参考答案:D

解析: 选项A定义了一个整型变量i,并且初始化让它指向NULL,接着通过scarnf()函数,改变i指向的存储空间的值,选项A中首先定义了整型指针变量i并初始化为NULL,即表示指针i不指向任何存储单元,即此时还没有为i在内存中开辟存储单元,而在scanf()函数中第二个参数是地址参数,显然在这里i不表示地址,所以下面的scanf("%d",i)语句是不正确的,故选项A不正确。选项B定义了一个实型指针变量f并初始化使它指向NULL,即还没有为f在内存中开辟存储单元,不能向*f代表的存储单元(不存在)中写数据,故选项B错误;选项C中首先定义了一个字符变量t并给它赋初值'm',然后定义一个字符型指针c并让它指向了变量t,这一部分正确,然后接着用了一个语句“*c=&t;”应该将该语句中c前的*去掉,故选项C运用指针变量不正确。选项D中的'\0'是一个转移字符,称作“空值”,可以给指针变量L赋值。所以,4个选项中选项D符合题意。

选择题
多项选择题