a[0][0]==1 a[0][1]==2 a[0][3]==3 a[1][0]==4 a[1][1]==5 b指向a[0],即指向第一个三元素的起始位置,b+2就是a[0]+2,取其值就是a[0][2],即3
这个比较容易理解,因为a指向1,p=a+2,所以指向3,所以p-2指向1,p[1]为4,所以h=5
因为a[0]代表的是第一行的地址,所以此处sizeof(a[0])指的是一行的字节数。a[0] 是指第0行的3个元素,因而size of(a[0])=3 例如:int a[3][4]={1,2,3,4,5,6,7,8,9};相当于int a[3][4]={{1,2,3,4},{5,6,7,8},{9,0,0,0}};因此,a[1][3]=8, a[2]...
所以一共向后移动了9个单位,即得出运行结果10!要想正确表达a[1][2],应该是(*(ptr+1))[2],数组的运算符[ ]比间值运算符*的优先级高,(*(ptr+1))[2]表示a向后移动一个单位即三个Int,此时ptr指向4,再往后移动2个Int指向6。其实遇到这类问题画内存结构图比较容易理解了 ...
选 A。p+=2是使指针指向第三个数据;*(p++)是先使用*p再使p的值加一;*++p则先使p加一,在使用*p,此时的值是4.
*n 这里 输出的也就是 0x194+sizeof(int)*9 注意,这里的194是16进制的。因为是0x输出。如果是sizeof(int) =4 也就是32/64位系统,那么输出为 0x194+4*9=0x194+0x24=0x1B8 输出1b8 如果是sizeof(int) =2 也就是16位系统,那么输出为 0x194+2*9=0x194+0x12=0x1A6 输出1a6 ...
不知道楼主是不是着急打错了,源程序应该如下:include<stdio.h> int main(){ int a[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%d\n",*(p+9));} 这是一个指针指向数组,形成指针与数组元素相对应的问题。其中,定义了数组a[]和int型指针p,且使指针指向了数组a[],其实是将...
是4,p指向数组的首元素,+3指向首元素后的第三个
int a[3][3]={1,2,3,4,5,6,7,8,9};与 int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};等效,就是说,这个二维数组有3行、3列,可以看作 1 2 3 4 5 6 7 8 9 下面分析输出情况,k = 0时,2 - k = 2,输出a[0][2],就是3 k = 1时,2 - k = 1,输出...
for(i=0;i<3;i++)printf("%d",a[2-i][i]);也就是在for循环中,输出数组的一个变量,具体是哪个值呢?我们继续看;for循环中,i从0开始直到i=2循环结束,每次循环取的值为数组中的第(2-i)行,第i列的值。因此,依次取的值为a[2][0], a[1][1], a[0][2]。因此,这段程序...