这是定义了整形数组。这是将数组中一次赋值:a[0]=1,a[1]=2··········,a[8]=9。a[],代表了整形数组。 [] 这个括号里可以有值也可以没有,因为后边大括号里已经有了,所以一般 [] 中不放值。这句等价于 int a[9]={1,2,3,4,5,6,7,8,9};后面有几个编译器就当括号里是几加了数字,...
(p+2)的值是4 验证代码如下:include <stdio.h>int main(){int a[5]={1,2,3,4,5},*p;p=a+1;printf("%d",*(p+2));return 0;}执行结果:原理如下:a+1是数组a[1]的地址 p=a+1就是指向a[1]的地址 因此后面p+2,就是指向a[3]的地址 (p+2)就是a[3]的值=4 如果...
因为数组有10个数字,二维有三个数,10/3>3,所以计算机会自动将a数组变成a[4][3]因此一维的大小为4,“4”指一维有四个元素,而每个元素有3个数字
include<iostream.h> void change(int *n, int len){ int a, *p= &a;for(int i= 0; i < len/2; i++){ p= *(n+i);(n+i)= *(n+len-1-i);(n+len-1-i)= *p;} } void main(){ int a[10]={1,2,3,4,5,6,7,8,9,10};change(a, 10);for(int i= 0; i...
选C,首先二维数组a[][]包含两个一维数组a[0],a[1]每一个数组又有4个元素 (*p)[4]是一个指针数组,其中*p指向一个一维数组 当令(*p)[4]=a+1时,也就是让p指向a[1],而p[0][0]是指针p所指数组的第一个元素,所以p[0][0]就等价于a[1][0],即为5 a...
定义数组并赋值时C语言规定下标是这样的,a[n]中的n个元素应该是a[0]...a[n-1]。。因此int a[][4]的写法就是表示,第一维大小没限制,但是第二维数组大小就是4,也就是int a[][4]={{1,2,3,4},{5,6,7,8},{9,10}},明显是3。分析:二维数组的一维大小,即指二维数组...
变成0x12345679,然后再将其转换成地址,兜了一大圈,其实就是将ptr2指向a的下一字节。注意不是数组的下一个元素,因为一个元素有4个字节,下一个元素地址应该是0x1234567C。注意此处int *ptr2 = (int*)((int)a +1);与int *ptr2 = (int*)(a +1); 的区别,前者是使之指向下一字节,...
int a[][4]={1,2,3,4,5,6,7,8,9,10} 这么写的话,实际上a的构造是:int a[][4]={ {1,2,3,4},{5,6,7,8},{9,10,0,0},{0,0,0,0}};p=*(a+1);也就是p指向a第1行的行首元素,也就是*p=a[1][0]=5 所以9的表达式是,a第2行的行首元素,也就是a[2][0]...
选择 Bint a[][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};相当于int a[][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 0, 0}};而 int * p = *(a + 1);表明 p 此时指向 5 所以要想输出9, p 需要 += 4;剩下就是 * 和 ++ 优先级的...
include<stdio.h>main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<i;j++s+=a[i][j];printf("%\n",s);}i=1 j=0; s=a[1][0]+0=3;i=2 j=0 s=3+a[2][0]=3+5=8i=2 j=1 s=8+a[2][1]=8+6=14;明白了么...