![]() |
#2
rjsp2020-06-28 09:12
|
发现函数中的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);
}