设有整型二维数组a[3][4],
C语言允许把一个二维数组分解为多个一维数组来处理。因此数组a 可分
解为三个一维数组,即a[0],a[1],a[2]。
从二维数组的角度来看,a 是二维数组名,a 代表整个二维数组的首地址,也是二维数组0 行的首地址。a+1 代表第一行的首地址。
a[0]是第一个一维数组的数组名和首地址,*(a+0)或*a是与a[0]等效
的, 它表示一维数组a[0]0 号元素的首地址。因此,a,a[0],*(a+0),*a,&a[0][0]是相等的。
to xingying2000
如果a代表二维数组的首地址,那么*a不就代表a[0][0]的数值么?数值和地址怎么能相等呢?
C语言中,*a和a [ ]等价吗?我在书上看到是等价,但为什么??
是等价的 指针的意思是,指向一块内存的首地址 有了首地址,就可以访问这块内存中的第一个元素 把指针加上一个数字,就会得到一个新的指针,就可以访问这块内存中的后面的元素 数组的意思是,一块内存 但C语言有没法同时对一整块内存中所有元素访问,还是得一个一个元素单独访问 而要访问单独元素,还...
C语言指针数组中的 *a[]和 (*a)[]的区别是什么?
a[] 是一个指针数组,也就是一个数组,里面有N个指针 (*a)[]是一个指向数组的指针,也就是一个指针,指向一个数组
C语言中数组指针*a[]与a[]有啥区别?
a[]普通的数组,存的每一个元素都是一个普通类型的变量,比如int;*a[]是数组指针,它的每个变量都是指针,比如int类型,每个成员都是int *指针,很多指针元素组成一个数组,而不是普通的变量类型。就好像普通家庭里组成的成员都是普通人;国务院里组成的成员都是大官,牛逼的人,呵呵 ;指针算是牛...
C语言中*a[ ]是什么意思,和*a,a[ ]有什么关系
a[]:指针数组a,数组中存放的元素均为指针 (*a)[]:数组指针a,指向一个数组的首地址
C语言中,a与*a什么关系?
数据”。上面就段理解了,*a和a的区别就不难解释了。a是指针变量,用来存放地址,你可以认为是上面所说的盒子的号码,“*”是解引用操作符,你可以把它理解成打开盒子,*a就是打开a号盒子,取出里面的数据。简单来说,你记住,a存放的是地址,而*a是让程序去那个地址取出数据。
c语言数组中*a为什么和a【0】相等
因为数组的首地址也就是数组名,你的数组名为a,则 * 意思是取内容,*a就是 a地址的内容 a地址又因为是首地址和a[0]一样,所以可以说*a=a[0]望楼主采纳
C语言关于指针变量中**a的问题。 求详解
int *a[2] 表示一个指针数组,及a[1],a[2]都各自是一个指针,当直接打a 表示的是这个数组的首地址,*a表示的是取得就是a的首地址里面的内容,相应的就是a[1],而a[1]也是指针,可以再对起取内容,及*a[1],前面说过*a等价于*a[1],所以也可以写作:**a....
C语言中,* a和** a的区别是什么?
C\/C++中,*可以表示乘法运算符,也可以表示指针;比如 int *a;就是声明了一个可以指向int类型变量的指针,大概就是一块内存,里面被允许放一个地址,这个地址里面是一个int类型的数据;而int **a;是声明一个二级指针,大概就是一块内存,里面放了一个地址,是一个指向int 型数据指针的地址,就是...
(*a)[]与(*a)[][]问题,c语言
(*a)[M]和*a[M][M]这两个都可以, *a[M],(*a)[M][M]就不行, 这是由于你没理解:指针数组和数组指针的区别,int *a[n]是指针数组(也就是说其本质上是数组,但里面存放的都是指针)int (*a)[n]是数组指针(本质上是一个指针,而且是一个指向数组的指针)...
c语言 为什么*a和a指向同一个地址?*a不是取地址里面的内容吗,就是取值...
c语言里二维数组是一维数组所组成的数组 short a[3][4]; 有3个元素,每个元素都是由4个short组成的数组,注意,每个元素都是数组 a就是a[0], 有上面说的可知,a[0]是个数组,那自然就是个地址了 可以再加一句:printf("%d\\n",**a); \/\/ 这个就是a[0][0]了 ...