sizeof能不能求函数参数的大小
我有一个函数,参数中有一个一维数组,长度不填,我想在函数中求得数组的长度,有没有什么方法?
我想用sizeof(数组)/sizeof(数组[0])来求,可是不行,后来我百度了一下,有人说是因为sizeof是在编译的时候就把值确定了,所以我觉得在函数里用sizeof应该是得不到的数组大小的,请问有没有什么方法可以可以求出来?
[解决办法]
不能,因为数组在作为参数的传递过程中会退化为指针,不再保留原来的信息了。所以你无法获得到它的大小。传递参数的时候最好把大小也一起传递过去。
[解决办法]
void size_fun(int a[5]){ cout<<sizeof(a)<<endl;}void main(){ int s[5]; cout<<sizeof(s)<<endl; size_fun(s); system("pause"); return;}
[解决办法]
利用函数模板可保持数组类型,看例子。
#include <iostream>template <typename T, ::size_t N>void f (T (&) [N]){ std::cout << N << std::endl;}struct test { };int main (){ int i [5]; double d [10]; test t [20]; f(i); f(d); f(t); return 0;}
[解决办法]
使用数组 引用