p 是一个数组指针,用于指向一个4列的2维数组 a[2][4].这3种方式都可以表示元素a[1][2]的值: p[1][2], *(*(p+1)+2), *(p[1]+2)用程序输出作对比:include<stdio.h> int main(){ int a[2][4]={10,11,12,13, 20,21,22,23},(*p)[4]=a;printf("a[1][2]: ...
int j,a[10],*p;相当于int j;int a[10];int *p;所以A. p=p+2是合法的,是指针运算;不过p没有初始化,其值不确定B. p=a[5]不合法,a[5]是值不是指针,不能赋值给pC. 同BD. 不合法,(j+2)是表达式 ,不能取其地址 本回答由提问者推荐 举报| 答案纠错 | 评论 20 1 ljf10000 采纳率:50%...
A:p指向a的地址,*p自然为1;B:指针数值可以表现为数组的形式,第一个元素对应p[0];C:*&a等同于*p;
很明显楼主有点搞混了(*)的意思, int *p = &i; 此时的 * 是定义一个指针p指向i; 而*p,此时* 不再是声明或者定义指针的意思,而是解引用,是对应于 & (取地址)的,&是取一个对象的地址 而 * 是取这个地址对应的对象。所以 *p就是i, *p = i。
func作用是将传入的第二个参数改为x+2+1=x+3,并返回2x+2+2=2x+4,所以 int a=1,b=2,c;c=func(a,&b); //这句执行后b=a+3=4 c=2*a+4=6 b=func(c,&b);//同上,b=2*6+4=16 a=func(b,&c);// c=16+3=19 a=2*16+4=36 即abc分别为36 16 19 ...
i=0;x*=*(p+i)等价于x=x*a[2]=1*3=3 i=1;x*=*(p+i)等价于x=x*a[3]=3*4=12 i=2;x*=*(p+i)等价于x=x*a[4]=12*5=60
q = p;:用p给q赋值。类型不对。p是指向int的指针,q却是指向float的指针,类型不同不能赋值。除非强制转换。p = NULL; :p是一个指针,但它不指向任何变量,多以答案对的。也就是暂时先不给它赋值,以后再赋值。如:int a = 0, *p;p = NULL;...p = &a;q = new : 语法错误。...
定义指针时的*和使用指针时的*是不同的。定义的时候int *p表示p是一个指针,*p=2表示p指向的位置的值为2。你需要把这两句分开写
C.*p+2 没有一个是指向a[2]的,但C的结果是1+2=3
p++的结果是a[3],也就是4;但是p++本身的值是a[2],即为3.换句话说,p++后,p的值会加1,但是你在程序里加一句n=p++,就可以看到n的值还是p。A的意思应该是p++本身的值。补充一点,如果是++p的话,值就是a[3]了。不管是p++还是++p,结果都会自增1,但是它本身的值要看加号在前...