设有如下数组定义:int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 计算下面各项的值(设数组a的首地址为2000,一个int类型数占四个字节).(1)a[2][1]\x05\x05(2)a[1]\x05\x05(3)a\x05\x05\x05(4)a+1(5

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 16:31:29
设有如下数组定义:int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 计算下面各项的值(设数组a的首地址为2000,一个int类型数占四个字节).(1)a[2][1]\x05\x05(2)a[1]\x05\x05(3)a\x05\x05\x05(4)a+1(5

设有如下数组定义:int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 计算下面各项的值(设数组a的首地址为2000,一个int类型数占四个字节).(1)a[2][1]\x05\x05(2)a[1]\x05\x05(3)a\x05\x05\x05(4)a+1(5
设有如下数组定义:int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
计算下面各项的值(设数组a的首地址为2000,一个int类型数占四个字节).(1)a[2][1]\x05\x05(2)a[1]\x05\x05(3)a\x05\x05\x05(4)a+1
(5)*a+1\x05\x05(6)*(a+1)\x05(7)a[2]+1\x05\x05(8)*(a+1)+1
(9)*(*(a+2)+2)
编写一个程序直接输出你的答案,一行一个.
请给出源代码并且详细解释1-9的意思.

设有如下数组定义:int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 计算下面各项的值(设数组a的首地址为2000,一个int类型数占四个字节).(1)a[2][1]\x05\x05(2)a[1]\x05\x05(3)a\x05\x05\x05(4)a+1(5
#include
int main ()
{
int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
printf("%d \n",a[2][1]); //输出为第3行第2列的元素. 19
printf("%d \n",(a[1])); //输出为第二列第一个元素的地址,也可以说是第二列的首地址,假设数组的首地址为2000,则a[1],为2000+4*4=2016
printf("%d \n",a); //输出为数组首地址,2000
printf("%d \n",a+1); //这里的a代表的是整个数组的首地址,a+1则表示行加1,也就是跳了一行,值为 2016
printf("%d \n",*a+1); //这里*a代表数组的第一行,*a+1则表示在第一行中地址加1,跳了一个int字节数,值为2004
printf("%d \n",*(a+1)); //a+1指向数组第二行,*(a+1)代表第二行的首地址,2016
printf("%d \n",a[2]+1); //a[2]表示第三行的首地址2032,a[2]+1表示在第三行中跳一个int字节数,值为2036
printf("%d \n",*(a+1)+1); //*(a+1)代表第二行的首地址2016,*(a+1)+1在第二行中跳一个int字节数,2020
printf("%d \n",*(*(a+2)+2)); //*(a+2)+2 指向第三行第3个元素,*(*(a+2)+2)中最外面的*表示对它取值,21
return 0;
}//注:实际输出的地址与答案肯定不一样,因为内存的分配位置人为无法控制,这里只能假设首地址是2000