设有如下数组定义: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/06/20 11:54:47
![设有如下数组定义: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](/uploads/image/z/13107846-30-6.jpg?t=%E8%AE%BE%E6%9C%89%E5%A6%82%E4%B8%8B%E6%95%B0%E7%BB%84%E5%AE%9A%E4%B9%89%EF%BC%9Aint+a%5B3%5D%5B4%5D%3D%7B%7B1%2C3%2C5%2C7%7D%2C%7B9%2C11%2C13%2C15%7D%2C%7B17%2C19%2C21%2C23%7D%7D%3B+%E8%AE%A1%E7%AE%97%E4%B8%8B%E9%9D%A2%E5%90%84%E9%A1%B9%E7%9A%84%E5%80%BC%EF%BC%88%E8%AE%BE%E6%95%B0%E7%BB%84a%E7%9A%84%E9%A6%96%E5%9C%B0%E5%9D%80%E4%B8%BA2000%2C%E4%B8%80%E4%B8%AAint%E7%B1%BB%E5%9E%8B%E6%95%B0%E5%8D%A0%E5%9B%9B%E4%B8%AA%E5%AD%97%E8%8A%82%EF%BC%89.%EF%BC%881%EF%BC%89a%5B2%5D%5B1%5D%5Cx05%5Cx05%EF%BC%882%EF%BC%89a%5B1%5D%5Cx05%5Cx05%EF%BC%883%EF%BC%89a%5Cx05%5Cx05%5Cx05%EF%BC%884%EF%BC%89a%2B1%EF%BC%885)
设有如下数组定义: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