7.设有定义:int n,*p=&n: 则p表示 ,*p表示 .

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/21 16:22:32
7.设有定义:int n,*p=&n: 则p表示 ,*p表示 .
设有变量定义 int a[3][2]={1,2,3,4,5,6},(*p)[2]=a;表达式**(p+2)的值?

(*p)[2]=a表示将p定义为一个指向含2个元素的一维数组的指针变量,那么二维数组就可以看作是一维数组a[3],其中每一个元素都是一个一维数组,a[1]={1,2},a[2]={3,4},a[3]=

设有变量定义 int a[3][2]={1,2,3,4,5,6},(*p)[2]=a;表达式**(p+2)=*p[2]的

**(p+2),*p[2]这两个表达式是等价的,当然,**(p+2)=*p[2]是一个赋值表达式,最终的值还是a[2][0],即5

设有变量定义 int a=10,b=20;

a+=b等同与a=a+b,这样a=30,b=20a-=b等同与a=a-b,这样a=-10,b=20a*=b等同与a=a*b,这样a=200,b=20a/=b等同与a=a/b,这样a=0,b=20(因为

设有如下定义:int a,*p,*p1 = NULL,*p2 = NULL,sum[2] = {1,2};以下指针变量p

选B因为&a是一个指向数组的指针,而p是一个指向整型的指针,二者不是同一个概念.

设有定义:int a[2][2]={1,2,3,4},(*p)[2];,则在语句p=a;p++;后,**p的值为(3)

int(*p)[2]//定义指向一维数组的指针;p=a//将首行的地址赋给p.此时,*p的值为二维数组a的首行的地址,**p即为首行第一个元素的值,即1;p++//此时p指向二维数组a的第二行,*p的

设有定义语句“int a=10,*p=&a;”,则表达式“a+*p”的值是:

结果是20啊*p就等于a啊我用程序给你测试了voidmain(){inta,*p;a=10;p=&a;printf("%d\n",a+*p);}

34) 设有以下定义和语句 int a[3][2]={1,2,3,4,5,6},*p[3]; p[0]=a[1]; 则

选c,p[0]指向a[1],也就是&a[1][0],二维数组在内存中的存储方式和一维数组一样也是顺序存放的,所以p[0]+1就是a[1][0]的下一个元素

设有定义:int n=0,*p=&n,**q=&p,则下列赋值语句哪个是正确的?A.p=1;B.*q=2;C.q=p;D

答案是Dn,p,q这三者的关系如图所示.A错.p是指针,它里面存放的是地址值,而1是整数,类型不符,不能赋值.B错.q是指向指针的指针,*q相当于写成p一样.错误情况参考A的解释C错.p是指向整型变量

7.设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是( ).A) p=1; B) *q

n是整数,p是整数指针,q是双重指针.A:p=1属于将地址1赋给p,非法.B:*q=2这里*q相当于一个整数指针,问题同上,非法.C:q=p相当于把p的地址赋给q,不能说错,但是不同维数的指针互相赋值

设有定义:int n=0,*p=&n,**q=&p;则一下选项中,正确的赋值语句是()A,P=1B.*q=2 C.q=p

D.解释:A:因为P是指针,只能赋指针值或者NULL(也即0,就是空指针)给它.其他的都是错误的.这里复制5给它,所以错了.B:因为q是指针的指针(二级指针),只能赋给它一级指针的地址或者NULL.这

设有定义int m=2,n=5,*p=&n;则语句“m=*p;”的结果是().

一步步分析:*p=&n;为定义指针p,同时指向n的地址;m=*p;为对m重新赋值,此时*p为对地址&n取值,即n的值5,所以m值变为5;但此语句不是指向操作,本质上说可以是int=int操作,所以p的

设有定义语句“int x[8]={5,4,3,2,1},*p=x;”,则*p+6的值是 ()这个怎么求哦

整形数组名同时也是该数组在内存中的首个元素的地址,所以*p=x;的意思是:*p;//定义一个指针,p=x;//将数组的首元素的地址给p就是说*p就是数组的第一个元素5,所以*p+6中,指针的运算高于加

设有定义语句:int x[6]={2,4,6,8,5,7},*p=x,i;

*p=x是定义了一个int型的指针p,并给这个指针赋值为x(x为一个数组,实际上也可以看做int的指针)p++就是取出p的当前值,然后把指针指向下一个元素,p+i就是取出指向第i+1个元素的指针.所以

设有定义语句:int =0,*p=&你,*q;以下选项正确的是?a;p=1 b:p=q c:*p=*q

使用了逗号操作符,实际上等于:intn=0;int*p=&n;int*q;所以,n是整型,p,q是整型指针.a错了,c也错了,*p是解引用操作,得到的是p所指向的内存区域的值.它不能作为一个“左值”(

设有定义int m,n,*p;与语句“m = n;”等价的语句序列是( ).

答案是Dp=&n之后,指针p指向n然后m=*p,就是把指针p指向的数(在这里就是n了)赋值给m,所以与m=n等价

设有定义:int a[2][2]={1,2,3,4},(*p)[2];,则在语句p=a;p++;后,**p的值为()

答案选Bp = a;让a指向int a[2][2]的int a[][2];p++让p指向int[][2]的第二个地址,int a[1][2]的地址,所

设有定义int a[10],*p=a;下列对数组元素a[1]的引用中,错误的是

是错的;这对新手应该是个很隐蔽的错误,这里定义了inta[10];那么这里指针a是个常量,不能用于自加也就是说a的值时不能改变的,不能像a++这样