itgle.com
参考答案和解析
正确答案:D
解析:选项C)显然不对。选项A),B),D)从语法上讲都是可以的,但内存中地址为NULL,即地址0的单元不能随意存放用户数据,因为这样可能会破坏其他程序。选项D)中尽管用了,'\0',(在内存中也为0),但并未向该单元存放数据,故该项正确。
更多“若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是A.int *i=NULL;B.float *f= ”相关问题
  • 第1题:

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

    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符合题意。

  • 第2题:

    若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是

    A.int *i = NULL; scanf("%d", i);

    B.float *f = NULL; *f = 10.5;

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

    D.long *L; L = '\0';


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

  • 第3题:

    以下叙述中错误的是( )。

    A.改变函数形参的值,不会改变对应的实参的值

    B.函数可以返回地址值

    C.可以给指针变量赋一个整数作为地址值

    D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL


    正确答案:C

  • 第4题:

    以下程序段中的变量已正确定义。 for(i=0;i<;4;i++,i++)for(k=1;k<;3;k++);prinff(”*”);该程序段

    以下程序段中的变量已正确定义。 for(i=0;i<;4;i++,i++)for(k=1;k<;3;k++);prinff(”*”);该程序段的输出结果是( )。

    A.*

    B.****

    C.**

    D.********


    正确答案:A
    c语言约定分号为一条语句的结束。因此for(i=0;i<4;i++,i++)for(k=1;k<3;k++);是完整的语句,对研nd();没有任何影响,最后一nff(”·’),执行一次。因此答案为A选项。

  • 第5题:

    若程序中已包含头文件stdio.h,以下选项能正确运用指针变量的程序段是( )。

    A.int *i=NULL; scanf("%d",i);

    B.float *f=NULL; *f=10.5;

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

    D.long *L; L='\0';


    正确答案:D
    解析:本题考查指针变量的运用。选项A)、B)的指针定义错误,空指针NULL是对指针变量赋。值而得到的。例如:#defineNULL0int*p=NULL;对指针变量赋。值和不赋值的时候意义是不同的:指针变量未赋值时,它是指向任意不确定的存储单元,不能使用,否则将造成意外错误;而指针变量赋0值后,则可以使用,只是它不指向具体的变量而已。选项C)中的*c=&t;错误,因为&t是地址,而*c是值。选项D)是让指针L指向字符串的末尾,即字符串的结束符。