c 数组做为形參时 该參数退化为指针
2024-10-20 16:14:40
当数组做为函数的形參的时候,该參数退化为指针,而且是无法直接求得数组的大小。
传数组给一个函数。数组类型自己主动转换为指针类型,因而传的实际是地址。
void func(int array[10])
void func(int array[])
void func(int *array)
所以以上三种函数声明全然等同。
实际情况是。数组做參数。全然无法按值传递。
这是由C/C++函数的实现机制决定的。
通常计算数组大小的方式例如以下:
int len = sizeof(arr)/sizeof(type)
利用总长度和单个元素的长度关系得到数组的长度
但做为形參后,sizeof(arr)的长度总为4,即一个指针的长度。
为此,有两种方法来解决问题:
方法1.
參数传递的时候,直接加上一个參数做为数组的长度
方法2.(是错误的)
int *p = a[0];
int iLen = 0;
while(p != NULL)
{
iLen++;
*p++;
}
最新文章
- iOS下控件坐标的转换方法
- 洛谷 P1341 无序字母对 Label:欧拉路 一笔画
- Orchard MySql 修正版 下载
- CSS3入门
- $http设置headers来实现IE不缓存url请求的资源
- Python 解析构建数据大杂烩 -- csv、xml、json、excel
- SSIS-导入Excel文件时记录行号
- Spring Boot 集成 Swagger,生成接口文档就这么简单!
- linux 命令启动Oracle数据库
- js 加减乘除以及四舍五入 新写法
- 深入浅出JavaScript(一)
- svn中的ignore
- 关于npm run build打包后css样式中的图片失效的问题(如background)
- 利用U盘大白菜软件来重装win7系统
- “全栈2019”Java多线程第三章:创建多线程之实现Runnable接口
- temple-html5
- [z]计算机架构中Cache的原理、设计及实现
- 表单对象属性disabled和readOnly
- unity里无损实现制定物体bloom
- 【问题】/usr/bin/env: php: 没有那个文件或目录