C语言中一个二维数组 它的数组名是a 那a和*a有什么区别?

如题所述

对于二维数组名a和*a,二者的区别在于类型不同。
对于
TYPE a[M][N];
当使用a时,可以等同于二级指针TYPE **型。
而使用*a时,等同于TYPE*型。
从概念上说,a表示二维数组a的首地址,而*a表示二维数组a第一行a[0]的首地址。这样在使用的时候就有所区别。比如 对a的操作a[4]表示a的第四行首地址,而对*a的操作(*a)[4]则代表第一行的第4个元素,即a[0][4]。

所以a和*a除了值相同外,其它的各方面都是不同的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-24
数据名可以看作指针常量,分配数组空间时指针值就确定下来了,不像声明的指针变量那样,值是不能改变的。*a=a[0],对于二维数组a[0]也是一个指针,他们都指向数组的首地址,值都相等,但是,a和a[0]虽然值相等,但对他们进行指针运算时,地址偏移的基础不同。本回答被提问者和网友采纳
第2个回答  2014-11-23
a是这个二维数据首地址,*a是第一个元素值。
第3个回答  2014-11-23
其实不大 *a就是a[0]都是第一行的地址
第4个回答  2014-11-23
有无指针指向的区别。

C语言中一个二维数组 它的数组名是a 那a和*a有什么区别?
对于二维数组名a和*a,二者的区别在于类型不同。对于 TYPE a[M][N];当使用a时,可以等同于二级指针TYPE **型。而使用*a时,等同于TYPE*型。从概念上说,a表示二维数组a的首地址,而*a表示二维数组a第一行a[0]的首地址。这样在使用的时候就有所区别。比如 对a的操作a[4]表示a的第四行首...

为什么C语言中二维数组的数组名a和*a表示的是同一个值?
当定义二维数组a[M][N]时,数组名可以认为是二维指针,其指向二维数组的首地址。于是a的值就是首地址的值。而*a,就是a[0],a[0]是第一行的标记,代表第一行的首地址。在二维数组中,所有元素都是紧密排列的,这样整个数组的首地址,第一行的首地址,和第一个元素的首地址,即a, a[0], ...

c语言中,a 和a[] 有什么区别
a[]比a少一维,我具体给你解释下。几个元素可以组成数组,而几个一维数组可以组成二维数组,如此一直增加维数。比如说a[0]=2,a[1]=1,a[2]=3,组成一个一维数组,这就是a.但是,你要注意,a不是直接把这些东西都存着的,a只存首地址。假设定义了一个二维数组a[3][3].这时候a[0],a[1...

为什么C语言二维数组a[2][2], a和*a输出是相同的,都表示一个地址
二维数组可以理解为几个指向一维数组的指针组成指针数组。所以从类型上讲,a是指向指针的指针,*a是指向一行一维数组的指针。但a作为数组名,又表示了数组首地址(在内存中元素地址是连续的)。a是第一行数组首地址。所以值相同 (注意只是值相同,比如a[n]和(*a)[n]意义就不一样,一个表示第n行...

c语言中二维数组(*a)[1]和*a[1]有什么区别,为啥他们的值不一样?_百度...
二维数组名是一个指向一个一维数组的指针,a是一个二维数组名,就是一个指向一维数组的指针,一个这样的指针求间接运输(*a),得带的是这个指针所指向的一维数组的数组名,在此是 a[0], 数组名加一个下标就是数组元素值,(*a)[1]就是 第0行数组的第1个元素 a[0][1]-->2 a[1]->...

C语言:数组,*a和&*a有什么区别?
1、本质区别 双引号里面的是字符串, 而单引号里面的代表字符。2、输出区别 str = “a”输出的就是a这个字母;str = ‘a’输出的测试65 3、底层区别 用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。

c语言中二维数组a[i][j],为什么a=*a?
在C语言中,二者是相同的地址值。所以可以说a=*a.二维数组a定义为a[i][j]时,代表一组数据,有i行j列,共计i*j的元素。这组数据在内存中是连续存放的。而在C语言的使用中,a是二维数组的首地址。*a也就是a[0],是二维数组第一行的首地址。所以,二者是相同的地址值,即数据a[0][0]的...

c语言中(*a)[ ]和*a[ ]有什么区别
前者是二维数组的指针 后者是指针数组

C语言数组首地址相关问题!!
若a是一维数组名,我们知道*a就是a[0],就是*(arr+0)。因为a是数组的首地址,*a就是取首地址所指元素,就是数组的第一个元素。同样的道理,a是二维数组名时,*a也是取a的第一个元素,但是此时a所指的元素是一个一维数组,所以,实际上a所指元素是一维数组的首地址。二维数组a,a是数组地址...

求助C语言判断题
1、错。数组名是常量,不能改变其值。二维数组名是指向行数组的指针常量。比如int a[2][3],a就是指向第一行数组[3]的指针。*a就是第一行首地址。a+1就是指向第二行数组。(a+1)就是第二行首地址。但不能写a++。因为不能改变其值!2、错。非全局非静态的数组没有初值是随机值,需先...

相似回答