如何理解数组作为函数参数时,数组名就是指针?
来源:互联网 发布:360跑分软件 编辑:程序博客网 时间:2024/06/13 22:40
在《Expert C Programming》这本书中,第202页有这样一句话:在函数参数的声明中,数组名被编译器当着指向该数组第一个元素的指针。通过实例测试,这句话的意思就是:在声明这个参数的整个函数作用域内,数组名就是指针。
见测试用例:
代码注释从代码运行结果得到,从代码注释来分析:
1.在main()中,arr等价于&arr; 而在fun()和fun2中,ca不等价与&ca。原因就是上面说的:在声明ca这个参数的函数fun的整个作用域内,数组名就是指针,ca是指针,&ca就是指针的地址;而在main中,arr是数组名,arr和&arr都是数组第一元素的地址。
从而导致:fun函数中的printf("%x/n",&ca); 打印出数组第一个元素的地址的地址;而main函数中的printf("%x/n",&arr);打印出数组第一个元素的地址。
2.任何时候,当数组是字符串数组时,使用printf和cout打印字符串,只要打印的内容是数组某个元素的地址,即可打印出以这个元素开始的整个字符串。
例如:fun函数中:printf("%s/n",&(ca[0]));cout<<"&(ca[1]) = "<<&(ca[1]);
而当数组不是字符串数组时,当打印的内容是数组某个元素的地址时,打印的就是实际的地址。
补充:sizeof(数组名),得到的是整个数组的长度。
- 如何理解数组作为函数参数时,数组名就是指针?
- 如何理解数组作为函数参数时,数组名就是指针?
- 数组、指针作为函数参数
- 二维数组名如何作为参数传递
- 作为函数参数的数组名
- 数组作为函数参数的指针问题
- 数组作为函数参数、scanf初始化指针
- 数组、指针数组、数组指针、动态数组、数组作为函数参数
- 如何将二位数组作为参数传入函数。
- 二维数组如何作为函数参数使用?
- 二维数组如何作为函数参数使用?
- 如何将二维数组作为函数参数
- 数组作为函数参数
- 数组作为函数参数
- 数组作为函数参数
- 数组作为函数参数
- 数组作为函数参数
- 数组作为函数参数
- 开通啦
- linux发展的问题在于一种新的盈利模式
- Protel封装库至Allegro的转化---网上找的解决方案,个人未解决,请实现的大侠指点下
- 地址解析协议(ARP)与逆地址解析协议(RARP)
- 关于高价采购
- 如何理解数组作为函数参数时,数组名就是指针?
- 在控制台程序中用MFC类
- ubuntu10.04上安装ibus-cloud-pinyin
- 我是菜鸟,请大家照顾咯!
- make file笔记(待续)
- VC/C++ 变量命名规则(一)
- U盘出问题的解决方法!!!
- VC/C++ 变量命名规则(二)
- Ajax学习