文章目录
一、问题描述
二、从编译器角度分析该问题
三、数组作为参数的推荐方案
一、问题描述
----
将 数组 作为 函数参数 , 传递时会 退化为指针 ;
数组的首地址 , 变为指针地址 , 函数中无法判定数组的大小...形参的 array 当做指针 , 只给该形参分配了 4 字节内存 , 没有为其分配 4 x 3 = 12 字节的内存 ;
编译器会将 形参中的数组 作为指针处理 , 只会为其分配 指针 所占用的内存...;
如果 编译器 将 形参作为 数组处理 , 需要 将数组中的所有元素 , 都要拷贝到栈中 , 如果这个数组很大 , 有几千上万个元素 , 那么该函数的执行效率就很低了 ;
因此 , 为了提升 C 语言的执行效率..., 参数传递时 , 如果要传递大量数据 , 不允许传递数组 , 只能传递指针 ;
C 语言的优势 , 就是在 调用函数 之间 , 通过指针操作内存 , 效率很高 , 因此 编译器不允许使用数组作为参数...;
三、数组作为参数的推荐方案
----
形参设置为 数组元素类型的指针 , 以及数组元素个数 ;
代码示例 :
#include
/*
* 数组作为参数 会 退化为指针
*