能否只传递数组a作为函数参数而在函数中得到数组a的长度
rt,附上以下代码发现函数中的sizeof(a)/sizeof(a[0])不等于main函数中的值后,我在网上查阅到这是因为当数组名作为函数参数传递后,“退化”为指针,sizeof自然也就不能得到数组的长度,只是得到一个指针的长度而已。那么能否在不传递数组a的长度作为参数的前提下,在函数中得到数组a的长度呢,或者说能否避免当数组名作为函数参数传递后退化为指针的问题?
程序代码:
#include <iostream> using namespace std; void tot(int a[]) { cout << " this is tot , sizeof(a)/sizeof(a[0])= " << sizeof(a) / sizeof(a[0]) << " sizeof(a)=" << sizeof(a) << endl; for (int i=0;i<10;i++) cout << " " << a[i]; } int main() { int a[] = { 1,3,5,7,9,11,13,15,17,19 }; cout << "this is main , sizeof(a)/sizeof(a[0])= " << sizeof(a) / sizeof(a[0]) << " sizeof(a)=" << sizeof(a) << endl; tot(a); }