6.3 为什么作为函数形参的数组和指针申明可以互换?

这是一种便利。

由于数组会马上蜕变为指针, 数组事实上从来没有传入过函数。

允许指针参数声明为数组只不过是为让它看起来好像传入了数组, 因为该参数可能在函数内当作数组使用。

特别地, 任何声明“看起来象” 数组的参数, 例如

void f(char a[])

{ ... }

在编译器里都被当作指针来处理, 因为在传入数组的时候,那正是函数接收到的。

void f(char *a)

{ ... }

这种转换仅限于函数形参的声明, 别的地方并不适用。

如果这种转换令你困惑, 请避免它;

很多程序员得出结论,

让形参声明“看上去象” 调用或函数内的用法所带来的困惑远远大于它所提供的方便。

永不止步步 发表于01-14 10:36 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号