更多“已知“float*p;p=newfloat[2];”,若要释放p”相关问题
  • 第1题:

    设有如下定义:

    struck sk

    { int a;

    float b;

    } data;

    int *p;

    若要使P指向data中的a域,正确的赋值语句是

    A.p=&a;

    B.p=data.a;

    C.p=&data.a;

    D.*p=data.a;


    正确答案:C

  • 第2题:

    下列对变量的引用中,错误的是()。A.int a;int &p=a;B.char a;char &p=a;C.int a;int &

    下列对变量的引用中,错误的是( )。

    A.int a;int &p=a;

    B.char a;char &p=a;

    C.int a;int &p;p=a;

    D.float a;float &p=a;


    正确答案:B

  • 第3题:

    下列对变量的引用中,错误的是

    A.int a; int &p = a;

    B.char a; char &p = a;

    C.iht a; int &p; p =a;

    D.float a; float &p=a;


    正确答案:C
    解析:本题考核引用的定义和初始化。引用具有如下特点:引用能够使用任何合法变量名:引用不是变量,所以必须在定义时初始化,而且一旦初始化之后,就不能再成为其他变量的引用;引用不是值,不占存储空间,说明引用时,目标的存储状态不会改变。所以,引用只有说明,没有定义;引用仅在说明时带有“&”,以后就像普通变量一样使用,不能再带“&”。在C选项中,由于在定义引用p后没有进行初始化,所以此语句错误。

  • 第4题:

    设有如下定义:

    struct sk

    { int n;

    float x; } data, *p;

    若要使p指向data中的n域,正确的赋值语句是

    A.p=&data.n;

    B.*p=data.n;

    C.p=(struct sk*)&data.n;

    D.p=(struct sk*)data.n;


    正确答案:C
    解析:本题主要考查了结构体变量引用成员数据的方法,主要有以下几种:结构体变量名.成员名或结构体指针->成员名的方法来引用结构体成员。

  • 第5题:

    l设已有定义:floatx;,则以下对指针变量p进行定义且赋初值的语句中正确的是( )。A.float*p=&x;S

    l设已有定义:floatx;,则以下对指针变量p进行定义且赋初值的语句中正确的是( )。

    A.float*p=&x;

    B.int*p-(float)x;

    C.float p=&x;

    D.float*p=1024;


    正确答案:A
    指针是用来存放地址的变量,用(类型名*指针变量名)的形式定义。赋值时应将某个变量地址即&x赋给指针变量,因此选择A)。

  • 第6题:

    有以下程序includevoid fun(float* p1,int n1,float,*p2,int n2,float* s){ int i;s=(

    有以下程序 #include<stdio.h> void fun(float * p1,int n1,float,*p2,int n2,float * s) { int i; s=(float *)calloc(1,sizeof(float)); *s=0; for(i=0;i<n1;i++) *s+=*p1++; for(i=0;i<n2;i++) *s+=*p2++; } main() { float a[2]={1.1,2.2},b[3]={10.0,20.0,30.0),*s=a; fun(a,2,b,3,s); printf("%f\n",*s); } 上面程序的输出结果是( )

    A.60

    B.3.3

    C.63.3

    D.1.1


    正确答案:D

  • 第7题:

    设已有定义:float x;,则以下对指针变量P进行定义且赋初值的语句中正确的是( )。

    A.int*p=(float)x;

    B.float*p=&x;

    C.float p=&x;

    D.float=1024;


    正确答案:B
    指针是用来存放地址的变量,用(类型名+指针变量名)的形式定义。赋值时应将某个变量地址即8Ⅸ赋给指针变量,所以选择B。

  • 第8题:

    下列语句中正确的是()。A.int * p;i=8; p=&i;B.int * p,i; p=&i;C.float * p;int i;p=&am

    下列语句中正确的是( )。

    A.int * p;i=8; p=&i;

    B.int * p,i; p=&i;

    C.float * p;int i;p=&(float)i;

    D.float * p;cout<<* p;


    正确答案:B
    解析:选项A中的变量i没有定义就使用了;选项C(float)i把i中的数据取出后变为float型,就是一个数值,“&(float)i”不能得到i的地址;选项D中的指针变量,p没有赋值就使用,它到底指向哪个存储单元没有指明,它可能指向不可读取的存储单元,这时的破坏性很大。

  • 第9题:

    已知p→(q∨r)为真,若要推出~p,必须加上前提()。

    • A、~q
    • B、~r
    • C、~q∨~r
    • D、~q∧~r

    正确答案:D

  • 第10题:

    请读程序: #include void fun(float *pl, float *p2, float *s) { s=( float * )calloc( 1, sizeof(float)); *s=*p1+ *(p2++); } main( ) { float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a; fun(a, b, s) printf(""%f/n"",*s); } 上面程序的输出结果是()

    • A、11.100000
    • B、12.100000
    • C、21.100000
    • D、1.100000

    正确答案:C

  • 第11题:

    单选题
    已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为()。
    A

    free(p);

    B

    free p;

    C

    free(*p);

    D

    free[p];


    正确答案: D
    解析: 暂无解析

  • 第12题:

    单选题
    已知“float*p;p=newfloat[2];”,若分配成功,则指针p在堆中获得的字节数为()。
    A

    2

    B

    4

    C

    8

    D

    不确定


    正确答案: A
    解析: 暂无解析

  • 第13题:

    已知有结构体: struct sk { int a; float b; }data,*p; 若有p=&data,则对data的成员a的正确引用是( )。

    A.(*p).data.a

    B.(*p).a;

    C.p->data.a

    D.p.data.a


    正确答案:B
    解析:本题主要考查结构指针:p=&data,访问结构体的成员,可以通过结构变量访问,即data.a,也可以用等价的指针形式:(*p).a和p->a来访问结构体变量中的成员。

  • 第14题:

    设有如下定义: struct sk { int a;float b; } data; int *p; 若要使p指向data中的a域,正确的赋值语句是( )。

    A.p=&a;

    B.p=data.a;

    C.p=&data.a;

    D.p=a;


    正确答案:C
    解析:要注意不能将结构体变量作为一个整体进行输入和输出,只能对结构体变量中的各个成员进行输入和输出。引用结构体变量中成员的方式有以下几种:结构体变量名.成员名;指针变量名->成员名;(*指针变量名).成员名。

  • 第15题:

    有以下程序: float f1(float n) { return n*n; } float f2(float n) { return 2*n; } main() {float(*p1)(float),(*p2)(float),(*t)(float),y1,y2; p1:f1; p2=f2; y1=p2(p1(2.0)); t=p1; p1=p2; p2=t; y2=p2(p1(2.0)); printf("%3.0f,%3.0f\n",y1,y2); } 程序运行后的输出结果是 ______。

    A.8, 16

    B.8, 8

    C.16, 16

    D.4, 8


    正确答案:A
    解析:题中“(*p1)(float)”定义了一个指向函数的指针变量p1,此函数的返回值是float类型。在main函数中,使得p1指向了函数f1,P2指向了函数缀。语句“y1=p2(p1(2.0));”先调用了p1函数,将其返回值4.000000传递给了f2的形参n,并使其函数返回值8.000000赋值给y1。然后在main函数中交换了p1、p2指针变量的指向,使p1指向了函数侵,p2指向了函数f1,并先调用函数f2,得到返回值4.000000,使其传递给f1函数的形参n,并带回返回值16.000000赋值给y2。在输出y1、y2时,各浮点数占3列,小数位数为0,即输出了  8,16。

  • 第16题:

    有以下程序 float fl(float n) { return n*n; } float f2(float n) { return 2*n;} main() {float(*p1)(float),(*p2)(float),(*t)(float),y1,Y2; p1=f1; p2=f2; y1=p2(p1(2.O)); t=p1; p1=p2; p2=t; y2=p2(pl(2.0)); printf("%3.0f,%3,Of\n",y1,y2); } 程序运行后的输出结果是

    A.8,16

    B.8,8

    C.16,16

    D.4,8


    正确答案:A
    解析:题目一开始定义了两个函数,f1()实现的是返回参数的平方;f2()实现的是返回参数的2倍。接下来在主函数中定义了三个函数指针p1,p2,t。语句p1=f1;p2=f2;让指针p1指向函数n(),指针p2指向函数9()。然后调用p2(p1(2.0)),即让2先平方再乘以2,结果为8并赋给y1。然后语句序列t=p1;p1=p2;p2=t;交换了p1和p2的值,即p1指向f2(),p2指向f1()。再调用p2(p1(2.0)),让2先乘以2再平方,结果为16赋给y2.最后输出y1,y2的值为8和16,应该选择A。

  • 第17题:

    以下4个程序中,不能实现两个实参值进行交换的是 ( )。

    A.void swap (float *p, float *q) { float *t ,a; t = &a; t = p; *p = *q; *q = *t; } void main () { float x = 8.0;y = 9.0; swap (&x, &y); cout<<x<<", "<<y<<

    B.void swap (float *p, float *q) { float a; a = *p; *p = *q; *q = a; } void main() { float x = 8.0;y = 9.0; swap (&x, &y); cout<<x<<", "<<y<<end1;

    C.void swap (float *p, float *q) { float x; x = *p; *p = *q; *q = x; } void main() { float a,b.; *a = 8.0;*b = 9.0; swap (a, b) ;

    D.void swap (float &p, float &q) { float a; a = p; p = q; q = a; } void main() { float a = 8.0,b = 9.0; swap (a,b); cout<<x<<", "<<y<<


    正确答案:C
    解析:本题考核指针和引用作为函数形参。做此类题时,应学会整体比较,要不然花费的时间不亚于一个大的编程题。①首先,这4个程序都是调用swap函数,而且目的都一致,交换传入的两个实参值。②分析被调函数swap()。在选项A、B和C中都是指针作为形参,只有在选项D中,函数swap()是以引用作为形参。由指针和引用作为函数形参的特点可知,只要调用了函数,就能达到交换两个实参变量的值,所以这几个被调函数没有问题。③再看主函数。在选项C中,没有定义指针类型变量,而是直接给指针变量赋值:“floata,b;*a=8.0;*b=9.0;”,这显然是非法的。想直接开辟存储空间,交换两个常量值,是不可能的。所以只有选项C是错误的。

  • 第18题:

    以下程序的输出结果是 void fun(float*p1,float*p2,float*s) { s=(float*)calloc(1,sizeof(float)); *s=*p1+*p2++;} main() { float a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a; fun(a,b,s); printf("%5.2f\n",*s);}

    A.11.1

    B.12

    C.21.1

    D.1.1


    正确答案:D
    解析:本题主要考查了一维数组名用作函数实参进行的运算,数组名作实参相当于传递的是地址,这样在函数中对形参进行的操作可以影响到实参。

  • 第19题:

    有以下程序:include float f1 (float n ){return n*n;}float f2 ( float n){return 2

    有以下程序:#include <stdio.h>float f1 (float n ){ return n*n;}float f2 ( float n){ return 2 * n;}main( ){ float ( * p1)(float),( * p2)(float),(*t)(float) ,y1,y2; p1 = f1;p2 = f2; y1 = p2(p1(2.0) ); t =p1;p1 = p2;p2 =t; y2=p2(p1(2.0)); prinff("% 3.0f, %3.Of\n" ,y1,y2);}程序运行后的输出结果是( )。

    A.8,16

    B.8,8

    C.16,16

    D.4,8


    正确答案:A
    解析:程序中定义了三个指向函数的指针变量p1、p2、t,函数返回值均是float类型。在main函数中,p1指向了函数f1,p2指向了函数f2。语句y1=p2(p1(2.0));先调用f1函数,将其返回值4.000000传递给f2的形参n,并将其函数返回值8.000000赋值给y1。然后在main函数中交换p1,p2指针变量的指向,使p1指向了函数f2,p2指向了函数f1,执行语句y2=p2(p1(2.0));先调用函数f2,得到返回值4.000000,将其传递给f1函数的形参n,并将返回值16.000000赋值给y2。在输出y1,y2时,各浮点数占3列,小数位数为0,即输出了:8,16。

  • 第20题:

    已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为()。

    Afree(p);

    Bfree p;

    Cfree(*p);

    Dfree[p];


    A

  • 第21题:

    已知“float*p;p=newfloat[2];”,若分配成功,则指针p在堆中获得的字节数为()。

    • A、2
    • B、4
    • C、8
    • D、不确定

    正确答案:C

  • 第22题:

    请读程序:#includevoidfun(float*pl,float*p2,float*s){s=(float*)calloc(1,sizeof(float));*s=*p1+*(p2++);}main(){floata[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;fun(a,b,s)printf(""%f/n"",*s);}上面程序的输出结果是()

    • A、11.100000
    • B、12.100000
    • C、21.100000
    • D、1.100000

    正确答案:D

  • 第23题:

    单选题
    用new运算符创建一维整型数组的正确语句是()。
    A

    int*p=newa[10]

    B

    int*p=newfloat[10]

    C

    int*p=newint[10]

    D

    int*p=newint[5]={1,2,3,4,5}


    正确答案: C
    解析: 暂无解析