二维字符数组的函数实数与形参问题

[复制链接]
查看11 | 回复2 | 2011-3-13 10:41:04 | 显示全部楼层 |阅读模式
........
int main()
{

char a[10][11];

........

f1(a);

f2(a);
}
int f1(char a[][11])
{

.........
}
int f2(char *a[])
{

.........
}
字符数组a代表的是什么?这两种形参有什么区别?为什么第二个会说\"传值错误\"呢?
为什么把第二个改成*a[10]还是错?
回复

使用道具 举报

千问 | 2011-3-13 10:41:04 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">第二个改成char (*a)[11]
我要分数,呵呵



f1里的a代表的是“数组指针”数组的首地址(可能不好理解,你可以把“数组指针“对应int来说,就是int 型数组的首地址),二维数组可以看成是元素是类型是数组的一维数组。
f2中的a代表是指针数组的首地址,也就是说数组里的元素是指针。
而a[10][11]的一个意思就是”数组指针”数组的首地址,类型不同自然f2的调用就是错的。
你把第二个改成char *a[10],这里a 还是原来的意思啊,没有影响,和数组的大小无关
回复

使用道具 举报

千问 | 2011-3-13 10:41:04 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1537890\">*a[11]也是不行...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行