为您找到"
若有定义语句:int a[4]={0,1,2,3},*p;p=&a[1];则++(*p)的值是
"相关结果约100,000,000个
根据FOR循环,得知:p[0]=&a[0],p[1]=&a[3],p[2]=&a[6],p[3]=&a[9];(*(p+1)+2)=a[5]=6;*(p+1)即是数组p[1];内容是数组a的第三单元的地址。p[2]=a[6]=7;
【答案】:C 解析:A.写法错误,把数组a的首地址赋给指针数组p要打*号,B.写法错误,给指针数组赋值的应该是地址 D.写法错误,给p[1]赋值的应该是二维数组的一个具体的数组元素
值为:5 根据指针的移动规则,*(p+5)的值应该是a[1][1]的值,即5。解释:p是指向a[0][0]的指针,将p+5,则指向a[1][1],即5的位置,因此*(p+5)的值为5。
都正确,你要知道,数据在内存当中的存储方式。你的*(*(a+1)+2)就是一行二列的元素,那就是6.而*(*(p+5))就是偏移量为5的那个元素,还是6啊。你的数组虽然是二维数组,但在内存当中还是以顺序的方式存放数据的。了解了就知道怎么回事了。 (提醒,别忘了数组是从0开始的,就是0行...
p的值是3。第一条输出语句:printf("%s*p=&a[0]+1 相当于 int *p; p=a+1; 所以答案*p=a[1]=3。&a[0] 就是a数组的首地址 即相当于a 。 a+1就相当于指针下移一个单位。inta[2]={1,3}即a[0]=1,a[1]=3。p=&a[0]+1 这是一个指针变量,*p=&a[0]+1就是a[0]的...
int x=3;do { printf("%d",x-=2);} while(!(--x));A. 1-2 B. 30 C. 1 D. 无输出 7、下列程序段执行之后,输出的结果是【A 】double x=4,y;if (x<0)y=0;elseif(x<10)y=1.0/x;else y=1;printf("%.2f\n",y);A. 0.25 ...
记住一个万能公式就行了:(p + i) = p[i]所以:(p+1) = *(*(p+1)) = *(p[1]) = *(p[1] + 0) = p[1][0] = 5;(*p + 1) = *(*(p + 0) + 1) = *(p[0] + 1) = p[0][1] = 2;所以结果就是3了。
是2 由于*p=a,p指向了a的第一个元素a[0](*++p)++ 这个先执行++p p指向a[1]p就是a[2]转化为a[2]++,由于++先算表达式值在自加1,所以这个表达式的值为2
这里的“错误”是指语法上的错误。*q=0;程序会crash。其他都是合法的赋值语句。(不是相等哦)。
错误的是A a[][]相当于 **a 很显然,p是指针;a是指向指针的指针。两个无法赋值。