C语言数组与指针作为传递参数的使用

       学习笔记中的内容多少会有一点文不对题,因为C语言中数组无法作为函数的一个传递参数。而数组名在作为函数传递参数使用的时候实际上也被转换成了一个指针。

编写如下代码;

#include"stdio.h"

 

char hello[] ="hello";

 

int main(void)

{

       printf("%s\n",hello);

       printf("%s\n",&hello[0]);

       return 0;

}

编译运行结果:

E:\WorkSpace\02_技术实践\01_编程语言\01_C语言\01_C语言陷阱与缺陷\exp03>gcc hello.c

 

E:\WorkSpace\02_技术实践\01_编程语言\01_C语言\01_C语言陷阱与缺陷\exp03>a

hello

hello

       从上面的结果可以看出,其实,在函数的参数中使用数组名与使用指向数组第一个元素的指针是同一个效果。

       尽管两者在使用技术上有着同质性,但是为了避免不同的形式会给别人产生错误的引导,非数组类的声明尽量以指针的方式进行比较好。倘若一个指针指向的内存并不是一个数组,那么采用数组名的声明方式或许就会给人产生错误的引导。类似的,如果指向的是一个数组区域,则会给人以更加丰富的信息。例如:

int main(int argc,char* argv[])

{
/* code here */

}

int main(int argc,char** argv)

{
/* code here */

}

两种方式完全等价,但是前面一种能够更清晰地让人看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义。

       以上,是数组或者指针用于函数参数传递时候需要注意的一点地方。主要的参考信息来自于对书籍《C语言陷阱与缺陷》,的确是值得好好阅读一下。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值