文章目录
一、问题描述
二、从编译器角度分析该问题
三、数组作为参数的推荐方案
一、问题描述
----
将 数组 作为 函数参数 , 传递时会 退化为指针 ;
数组的首地址 , 变为指针地址 , 函数中无法判定数组的大小...sizeof(array)=%d\n", sizeof(array));
// 将数组作为参数传递到函数中
fun(array);
return 0;
}
执行结果 :
二、从编译器角度分析该问题...----
该问题的理解 , 需要从 C/C++ 编译器的角度进行理解 , 代码开发出来 , 主要是给编译器使用的 , 让编译器明白开发者的意图 ;
上述示例中 , 函数的 实参是
// 将要作为实参的数组...;
上述 实参的 array 与 形参的 array 数据类型不同 ,
编译器将 形参的 array 当做指针 , 只给该形参分配了 4 字节内存 , 没有为其分配 4 x 3 = 12 字节的内存...有几千上万个元素 , 那么该函数的执行效率就很低了 ;
因此 , 为了提升 C 语言的执行效率 , 参数传递时 , 如果要传递大量数据 , 不允许传递数组 , 只能传递指针 ;
C 语言的优势 , 就是在