更多“若有如下说明:int a,b=5,*t=&a;则能完成a=b赋值功能的语句是()A.&a=&b;B.*t=b;C.*t=&b;D.*a=*t; ”相关问题
  • 第1题:

    若有说明int i,j=2,*p&i;,则能完成i=j赋值功能的语句是______。A.i=*p;B.*p=*&j;C.i=&

    若有说明int i,j=2,*p&i;,则能完成i=j赋值功能的语句是______。

    A.i=*p;

    B.*p=*&j;

    C.i=&j;

    D.i=**p;


    正确答案:B
    解析:指针是一种用来存放变量地址的特殊变量。本题中指针变量P用于存放整型变量i的地址,改变*P的值即为改变i的值。又因为“&”和“*”两个运算符的优先级别相同,按自右而左的方向结合,所以*&j先进行&j运算,得j的地址,再进行*运算,取所得地址里面的值,故*&j与j等价。

  • 第2题:

    若有如下程序: sub(int *t,int a[3][4]) { int m,n; for(m=0;m<3;m++) for(n=0;n<4;n++) { *t=a[m][n];t++;} } main() { int*t,s[3][4)={{1,2,3),{4,5,6),{7,8,9}}; t=(int*)malloc(50); sub(t,s); printf("%d,%d\n",t[4],t[7]); } 则程序运行后的输出结果是( )。

    A.4,7

    B.4,0

    C.5,8

    D.程序错误


    正确答案:B
    解析:本题定义了一个sub()函数,其作用为将一个二维数组按行复制到t所指的连续内存空间内。主程序中首先使用malloc()函数为t申请了50个字节的内存空间,然后调用sub()函数,将二维数组s的内容复制到t申请的内存空间内,最后输出t的第5个元素(t[4])和第8个元素(t[7]),即为3行4列二维数组中的s[1][0]和s[1][3]。s[1][0]是初始化列表中第二个大括号中的第一个值4,而s[1][3]应该是初始化列表中第二个大括号中的第4个值,但没有这么多初始值,C语言在这种情况下会自动将该元素设置为0,即s[3][4]={{1,2,3},{4,5,6},{7,8,9}}等价于s[3][4]={{1,2,3,0},{4,5,6,0),{7,8,9,0}}。所以最后输出结果是4,0,应该选择B。

  • 第3题:

    程序已有部分语句: int a=5,t=3,*p; p=&a; 对于指针变量p的使用,下面不正确的赋值语句是()。

    A.t=*p;

    B.a=t;

    C.*p=&t

    D.*p=t;


    *p=&t

  • 第4题:

    若有说明int i,j=2,*p=&i;则能完成i=j赋值功能的语句是______。A.i=*p;B.*p=*&j;C.i=&

    若有说明int i,j=2,*p=&i;则能完成i=j赋值功能的语句是______。

    A.i=*p;

    B.*p=*&j;

    C.i=&j;

    D.i=**p;


    正确答案:B
    解析:指针是一种用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变i的值。又因为“&”和“*”两个运算符的优先级别相同,按自右而左的方向结合,所以*&j先进行&j运算,得j的地址,再进行运算,取所得地址里面的值,故*&j与j等价。

  • 第5题:

    若有如下程序: int s[3] [3]={'a','b','C','d','e','f','g','h','i'},*t; main() {t:(int*)malloc(sizeof(int)); sub(t,s); printf("%c\n",*t); } sub(int*p,int b[][3]) {*p=b[2][1]; } 则程序运行后的输出结果是( )。

    A.d

    B.e

    C.h

    D.b


    正确答案:C
    解析:让指针变量t指向一个整型动态存储空间。函数sub中的语句“*p=b[2][1]”是将数组元素b[2)(1]即h赋给p所指向的存储单元中。