int a[ ]中,a表示什么

 我来答
kaixingui2012
推荐于2017-09-09 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6398万
展开全部

        int a[ ]中,a表示数组名,代表数组的首地址,可以看成一个常量,不可更改。

  • 数组的定义形式:

           元素数据类型   数组名  [ 数组元素个数 ] ; 

  • 其中:

    • 中括号是数组的标识。

    • 括号中的数组元素个数在有初始化数据时,可省,按初始化实际数据个数分配数组空间。如: int a[]={1,2,3,4,5}; //a占5个整型数据空间。

    • 数组所占内存空间,可用sizeof命令计算得到。如:sizeof(a)=5*4=20

  • 当自定义函数时,函数形参是数组类型时,形参可以写成数组形式或是指针形式,代表把数组的首地址传递在子函数中,如:

    • void sort( int *a, int ); 

    • void sort( int a[], int n ); //a虽然是数组形式,但实际仍是指针类型,仅表示数组首地址。    此时,在子函数中,用sizeof(a)命令,得到结果会是4 (指针类型所占内存的大小)

百度网友85b02c99db
2014-06-22 · 超过90用户采纳过TA的回答
知道答主
回答量:156
采纳率:93%
帮助的人:58.7万
展开全部
声明 int a[3][4];
那么语句中 a,*a,**a分别代表什么呢?
a 代表 数组的首地址。
*a 代表 &a[0][0] 的地址。
**a 代表 a[0][0] 的 值。
----------
c 语言 语句中 方括号 不是标点符号,而是 运算符!
关于 方括号 的 恒等式:
a[j][i] = (a[j])[i] = ( *(a+j))[i] = * ( *(a+j) + i)
我们把 j=0,i=0 代入 就可看出 **a 代表 a[0][0] 的 值。

a[0][0] 的 地址 是 &a[0][0] 或 &( **a) , 一个&和一个* 运算可以抵消, &( **a) = *a
所以 &a[0][0] 等于 *a

a 是首地址,易理解,从略。
------------------------------
#include <stdio.h>
int main(){
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
printf("%d %d\n", a , &a[0][0]);
printf("%d %d\n", *a , &a[0][0]);
printf("%d %d\n", **a , a[0][0]);
}
对比打印结果,你会加对 **a, *a 的 理解。
希望能解决您的问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式