为您找到"
...{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2; printf...
"相关结果约100,000,000个
printf("%d\n",p);//输出的是第一个元素a[0]的地址,怎么可能是2呢?printf("%d\n",p+9);//输出的是第一个元素a[9]的地址,怎么可能是4呢?//元素地址由操作系统管理,这个值不确定。
include <stdio.h> main(){ int a[10]={0,1,2,3,4,5,6,7,8,9};int* p=&a;// 这里要将指针指向数组第一个元素,也可以写成&a[0]for(i=0;i< 10;++i) //n长度的数组有效域为0~n-1,这里改成++i这样汇编会将1直接加到存i变量的寄存器上运行更快 { printf("%d\t",*(p+...
①*p=&a[3],所以*p=4(这个不解释了)②A我们明确一个概念,就是a[10]这串位置是连续的。B假设i=*p(i为p所指的单元格的值)。*p=4,即i=&a[3]=4 Cp-2即p所在的地址往前推2单元格;即i所指的值往前推2单元格,即i=&a[3]往前推2单元格,即&a[1]=2 综上所述4+2=6 ...
因为数组的下标是从0开始的,也就是说a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[5]=6,a[6]=7,a[7]=8,a[8]=9,a[9]=10。所以B不对;p 和 a 都是指向数组a说地址的指针,它们指向的都是a[0];a[p-a],因为p=a=a数组的首地址,所以 p-a =0,a[p-a]= a[0]。
题目有问题,p的值是多少?式子*p=a+4;若没有对p赋值,直接用*p是错误的,若题目是 int a[10]={1,2,3,4,5,6,7,8,9,10}, p=a+4;则 (++p)=6 分析:p=a+4,即相当于p=&a[4]++p 则p=&a[5],所以*(++p)=*(&a[5])=a[5]=6 ...
B. *(P+8)因为P为指向a[0]的指针,P+8即为a[8]
这题应该选D A p指向a,那么*p就是a[0]C ++(后缀) 的优先级比 *(取值) 高 故先进行++ 然后再进行取值 p++ 就是 a[1]D *p-a 是 a[0]-a 值不确定
a可以理解为这个数组的首地址 a[3]是指向第4个元素 所以p指向第4个元素 p[5]是从p后的5个 也就是第9个元素 所以b=9
答案是D,D的正确形式应该为:*(a+i)前面多了个星号。A:a[0]B: a[i]C: p[i]