你这样问很模糊啊 a[4][3]这个函数是4个字节;a[4][3]={1,2,3,4,5,6,7,8}这个字符串占26个字节;int a[4][3]={1,2,3,4,5,6,7,8};这个字符串呢,是31个字节;你可以用“sizeof”这个函数运算一下 12
int sum;for (i = 0; i < 4; i++){ sum = 0;for (j = 0; j < 4; j++){ sum += a[i][j];} printf("第%d行平均值: %f\n", i+1, sum / 4.0);} system("pause");return (0);} 运行结果如下:您的程序。。{int a[4][4]={{1,2,3,4},{5,6,7,8},{...
int a[3][4]={ {1,3,5,7},{2,4,6,8}};//创建3行4列的二维数组,并且给第1行和第二行赋值 (*a+1)的计算过程是这样的:a是数组的起始地址 ,对应第一行的第一个元素,也就是1 a+1就是第一行的第二个元素的地址,同理*a+2就是第1行第三个元素的地址 (*a+1)就是第一...
int a[]={1,2,3,4,5,6,7,8,9,0};int *p;for(p=a;p<a+10;p++){ printf("%d",*p);} 你这个i 很莫名其妙啊 上面的程序等同于下面这个程序 int a[]={1,2,3,4,5,6,7,8,9,0};int i;for(i=0;i<10;i++){ printf("%d",a[i]);} for (p=a ;p<a+10;p++)p...
(*ptr)[3]=a,数组指针只有3行,数组a有四行,所以(*ptr)[0]={1,2,3,4},(*ptr)[1]={5,6,7,8},(*ptr)[2]={9,10,11,12},所以*((ptr+1)[2])表示的是(*ptr)[2]里面的第二个元素就是10((ptr+1)[2])这种用法是不对的,数组的下标相当与解引用,比如a[2]=*(a+2)...
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]...
例如:int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};按行连续赋值:也可以将二维数组看作一个一维数组,其元素本身也是一个一维数组,然后进行连续赋值。例如:int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};部分元素赋值:...
若有说明int a[][4]={1,2,3,4,5,6,7,8,9};则数组a第一维是3。定义数组并赋值时C语言规定下标是这样的,a[n]中的n个元素应该是a[0]...a[n-1]。。因此int a[][4]的写法就是表示,第一维大小没限制,但是第二维数组大小就是4,也就是int a[][4]={{1,2,3,4...
所以a的值是12的地址,b就正确了。二维数组只带一个下标认为是组下标,故而a[2]是指向了{9,10,11,12}这个一维数组,一维数组步进以int作为标准,+3移到了12的地址上,取*就得到了12的值。D a[2][3],第一个组下标,第二个组内下标,取得的肯定是12.错误...
include<iostream> using namespace std;int main(){ int a[10]={1,2,3,4,5,6,7,8};//a[8],a[9]默认初始化为0 int *p;p=&a[5];//指针p现在指向数组a中的第六个即a[6];//p[-3]即表示指针p向前移动三个单位,也就是a[2],注意实际地址变量的值不变,p仍是只想a【5】c...