c语言数组中*a为什么和a【0】相等

在二维数组中*a不是表示a指针多指向的元素吗?而a【0】是第一个一维数组的首地址 这两个怎么相等呢

因为数组的首地址也就是数组名,你的数组名为a,则 * 意思是取内容,*a就是 a地址的内容
a地址又因为是首地址和a[0]一样,所以可以说*a=a[0]
望楼主采纳追问

a地址的内容怎么和首地址相等呢。。。

追答

因为a所指的是首地址a[0]是首地址的内容
*号是取内容,&是取地址,所以*a就是首地址的内容
所以*a=a[0]

追问

。。。。你解释的好像是在一维数组中吧 我说的是在二维数组中这里a【0】是地址而不是元素

追答

额看错了,但他们的道理是一样的,数组名不是表示首地址吗,它是二维数组可以用二维指针表示
所以*a的地址和a[0]是一样的吧,也就是**a=*(a[0])=a[0][0]

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-28
首先a是一个地址,它指向的是数组的首地址。*a可以操作数组中的所有元素。举个例子,假如b[5]={5,4,3,2,1},指针a指向b数组,a就是b[0](也就是5)的地址,而*a就是b[0],也就是等于5.不知道我解释清楚了没有。追问

我说的是二维数组中、、、

追答

道理是一样的,都是指向首地址。

第2个回答  2013-06-28
这里的a既是数组a的名字,又是数组a的首地址,a[0]表示数组a的首元素,*a表示地址a所指向的元素,也就是a[0]追问

我说的是在二维数组中这里的a【0】是地址不是元素 我没说清楚。。。

第3个回答  2013-06-28
可能是定义的是指向指针的指针(**a),所以*a表示的是一个地址,而不知元素的值
第4个回答  2013-06-28
因为他们确实相等,a就代表这个数组的首元素啊。

c语言数组中*a为什么和a【0】相等
因为数组的首地址也就是数组名,你的数组名为a,则 * 意思是取内容,*a就是 a地址的内容 a地址又因为是首地址和a[0]一样,所以可以说*a=a[0]望楼主采纳

为什么C语言中二维数组的数组名a和*a表示的是同一个值?
于是a的值就是首地址的值。而*a,就是a[0],a[0]是第一行的标记,代表第一行的首地址。在二维数组中,所有元素都是紧密排列的,这样整个数组的首地址,第一行的首地址,和第一个元素的首地址,即a, a[0], &a[0][0] 都是相同的。于是a和*a的值是相同的。

**a在C语言中表示a[0]a[0],为什么?
举例说明,如果定义了一个二维数组a[10][10],则a本身代表着这个数组的首地址,其本质就是定义了一个二维指针,a[m][n]与*(*(a+m)+n))表示相同意思,都表示取第m行第n个变量,m和n都取0时,就是问题所示。建议阅读下csdn上有关指针和数组的博客,有很多解释,这上面的说明还很口语化。

c语言数组,为什么a和&a[0]取值相同?而不是和a[0]取值相同?
a就表示数组的首地址,a[0]表示第一个元数,&a[0]表示第一个元数的地址,其实就是首地址,所以a和&a[0]取值相同

...教材上说在这个二维数组中a【0】和*a相等为什么
return 0;} 打印 语句 里, *p 是 p 指向的那个地址里存放的数的数值。现在指向a[0][0], 所以打印出 11。语句里 p[i] 是什么呢,是 地址 p + i * sizeof(int) 里存放的数的数值 i=0 , 就是 p[0] ,地址 p + i * sizeof(int) = 地址 p,与 前面 *p 数值 一样。对...

C语言中*a是什么意思啊?和数组一个用法吗?
a是对指针的操作方式 意思是取值,也就是a指向空间里面的值 可以和数组类似 a就等效于a[0]比如 int *a;int b=1;a=&b;那么*a就是b的值 也就是1

C语言中,*a和a [ ]等价吗?我在书上看到是等价,但为什么??
是等价的 指针的意思是,指向一块内存的首地址 有了首地址,就可以访问这块内存中的第一个元素 把指针加上一个数字,就会得到一个新的指针,就可以访问这块内存中的后面的元素 数组的意思是,一块内存 但C语言有没法同时对一整块内存中所有元素访问,还是得一个一个元素单独访问 而要访问单独元素,...

为什么c语言中a[0],*(a+0),&a[0]是相等的?
数组的首地址也是指针,int a[10],int p.这里的a和p都是指针。只不过,数组的首地址不能改变,而p可以指向其他地址。a[0]表示数组a的第一个元素 (a+0)也表示数组的第一个元素 &a[0]表示数组的第一个元素的地址,也就是首地址。

c语言中*a与a[ ]的区别,有近似的意思吗?求大神
a是指针,a[]是数组。当*a指向数组a[],默认是第一项a[0].只要将指针移向下一位就到a[1],两位就是a[2].具体用*a++,a++等操作你应该知道 还有一种*a[]是指针数组 具体分类请看下面 ---指针--- int a=10;int *p=&a;---指针的指针--- int b=20;int *p=&b;int **p2p=&p;...

C语言数组问题:int a[]; a代表a[0]的值,还是指向a[0]的地址
a代表数组的首地址,就是指向a[0]的地址。

相似回答