C语言,定义二维数组a那么a有什么区别啊

2021-02-26 21:22:19 字数 3289 阅读 4009

1楼:一方行走

a[0][0]是首元素成员,a[0]是首地址,跟a一样的值,a[1]是第二维首地址

2楼:逍遥一仔仔

当然有区别

a[0]是数组,a[0][0]才是取得第一个数组里第一个元素。

比如a = ,};

a[0][0] = 1;a[0] =;

c语言 二维数组问题 a[i][j]中 i是列数,j是行数,那么a[0][1]又是怎么理解?

3楼:匿名用户

a[i][j],i是行数,j是列数。

a[0][1]就是第0行第1列的元素。a[0][0]当然是第0行第0个元素,即数组的首元素。

4楼:后间男孩

a[0][1]指的是第一行的第二个元素,

数组定义的时候a[i][j], 指的是有i行,j列,但是没有a[i][j]这个元素。 是从a[0][0]开始算起的

5楼:仙魔同殿

在数组中都是从0开始计数的。如:a[3][4]是包含3行4列的一个二维数组。而a[0][0]则是表示此二维数组的第一行和第一列的交汇点上的那个元素,即为此数组的第一个元素。

注意;本数组仅有12个元素,且不可出现a[3][3],a[3][4],a[2][4]等来表示数组的元素、、、

6楼:匿名用户

搞反了a[[i][j]中 i是行数,j是列数,0 1 2 3 ----j

0 a b c d

1 e f g h

2 i j k l

i就是这个意思,a[0][0]=a ,a[0][1]=b,a[0][2]=c...

7楼:匿名用户

a[0][0]:第一行第一列。

a[0][1]:第一行第二列。

......a[i-1][j-1]:第i行第j列,这是最后一个数

8楼:刪ㄗ余汜憶

行数和列数都是从零开始的

9楼:匿名用户

到这里看下,望能帮助你。

c语言定义了一个二维数组a[5][3], 用循环实现a[0][0]+a[1][0]+a[2][0]+~~~a[5][0] ?如何实现??

10楼:匿名用户

可以啊,for(j=0;j<3;j++) for(i=0;i<5;i++) n=n+a[i][j];每一列的就有了,2个for语句的位置换一下就可以在行和列之间转换了!!!

11楼:匿名用户

哥们,a[5][0]数组越界了啊!最多能得到a[4][0]实现a[0][0]+a[1][0]+a[2][0]+~~~a[5][0]

float sum= 0;

for (int i=0; i<5;i++)sum += a[i][0];

cout<的也能实现

for ( j = 0; j< 3; j++)

12楼:匿名用户

//假设:int a[5][3];

//可以获得指定的列ncol的累加和

int getarraysum(int a[5][3], unsigned int ncol)

}return nresult;}

在c语言中,表达式:*p=a[0]与p=a[0]有什么区别?

13楼:匿名用户

对于指针来说,

*p = a[0],表示向地址为p的内存区域赋值为a[0]。

p = a[0],把变量p的值改为a[0],这个语句正常应用中是错误的。变量p的值为内存地址,这样赋值会丢掉p原来指向的内存。

正确给内存地址赋值应该使用第一句。

c语言中二维数组a[i][j],为什么a=*a?

14楼:匿名用户

在c语言中,二者是相同的地址值。所以可以说a=*a.

二维数组a定义为a[i][j]时,代表一组数据,有i行j列,共计i*j的元素。

这组数据在内存中是连续存放的。而在c语言的使用中,a是二维数组的首地址。*a也就是a[0],是二维数组第一行的首地址。

所以,二者是相同的地址值,即数据a[0][0]的地址值。

也就是说,从值上,a,*a, a[0],&a[0][0]都是相同的值。

当时,说a=*a也并不是完全正确的,从类型上,a等同于二维指针,而*a等同于一维指针。二者类型并不相同,只是在一定条件下可以转换。

15楼:匿名用户

我理解问题中的这个=楼主是指相等,而且是数值上相等。这是肯定的。*a实际是*(a+0)+0,也即是a[0]+0这个地址,和a一样,其数值也是这个二维数组的首地址。

但是二者含义可不同,不能直接相互赋值。a是行指针,即a是一个大小为i的数组,其元素也是数组,大小为j。*a由上面的解释,其实质是个列指针,指向a的第一个元素(大小为j的数组)的第0个元素。

16楼:匿名用户

#include "stdio.h"

main()

} 正确的写法应该是上面这样的。

这里涉及到2个问题:

1.数组声明的时候a[9]就是有9个元素的数组,a[10]就是有10和元素的数组

2.数组赋值的时候第一个元素的下标是从0开始的,即a[0],最后一个下标是声明时的数字-1,如:声明时:a[9],最后一个元素是a[8]。a[9]是超范围的。

17楼:

数组名a表示二维数组的首地址,*a就好比第一行的地址值a[0],a[0]表示&a[0][0]....

18楼:匿名用户

二维数组的指针比较特别,* 的作用是将行指针转换成列指针,数组名a是指向第一行的指针,*a则是指向第一行第一列的指针,根本含义上市不一样的,但是值都是a【0】【0】的地址

c语言二维数组表示形式!"&a[0][0]+4*i+j;(在i行前尚有4*i个元素存在)"

19楼:匿名用户

&a[0][0]就是a,表示的是数组的首地址你写的两个方式都是错误的

你的意思应该是表示一个4列的二维数组a的a[i][j]可以使用*(*(a+i)+j)望采纳

20楼:林小兀

这个很好理解啊,第一个式子是取二维数组的首地址,然后第二个便是在首地址后再偏移i*4,这样数组便是?*4的数组,你自己画个图,每个元素按顺序算下来,你就懂了

C语言,定义二维数组a,则(a+1)表示什么a+5)表示什么

1楼 倒霉孩子改名啦 a 1 相当于a 0 1 , a 5 相当于a 0 5 已经越界了 c语言 二维数组 a 1 1 和 a 5 分别表达什么? 2楼 匿名用户 a 1 a 1 那么 a 1 1 a 1 1 a 5 a 5 c语言定义了一个二维数组a 5 3 用循环实现a 0 0 a 1 0 a ...

c语言二维数组a,为什么a和(a+1)等

1楼 a 1 指针取得不就是地址吗 2楼 匿名用户 a 1 是定义的指针, 因为数组的起始地址a 0 可以用a来代替 所以a 1 和 a 1 是同一个地址 3楼 首先a代表整个数组的首地址没问题吧,a 1就是把地址下移, a 1 就是取其地址的内容。这回可以理解了吧! c语言中二维数组a i j 为...

C语言a b和a b的区别,C语言,++a+b和++b+a有什么区别

1楼 匿名用户 自增对象不同 a b 最后自增的是b a b 最后自增的a b c语言, a b和 b a有什么区别 2楼 珑月三 a b是先a加1,然后再加b b a是先b 1,然后再加a 3楼 亱風 a b是a先自加然后加b b a是b自加,,然后加a 结果一样,但是a 和b的值不相同 c语言b...