首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

sizeof能不能求函数参数的大小,该怎么处理

2012-05-16 
sizeof能不能求函数参数的大小我有一个函数,参数中有一个一维数组,长度不填,我想在函数中求得数组的长度,

sizeof能不能求函数参数的大小
我有一个函数,参数中有一个一维数组,长度不填,我想在函数中求得数组的长度,有没有什么方法?
我想用sizeof(数组)/sizeof(数组[0])来求,可是不行,后来我百度了一下,有人说是因为sizeof是在编译的时候就把值确定了,所以我觉得在函数里用sizeof应该是得不到的数组大小的,请问有没有什么方法可以可以求出来?

[解决办法]
不能,因为数组在作为参数的传递过程中会退化为指针,不再保留原来的信息了。所以你无法获得到它的大小。传递参数的时候最好把大小也一起传递过去。
[解决办法]

探讨
不能,因为数组在作为参数的传递过程中会退化为指针,不再保留原来的信息了。所以你无法获得到它的大小。传递参数的时候最好把大小也一起传递过去。

[解决办法]
textOut 有什么关系呢,楼上,

一维数组会蜕化为指针

二维数组蜕化位 数组指针
[解决办法]
函数参数传数组,传大小,别的还真的不晓得
[解决办法]
确实需要用另外一个参数传递大小;
C/C++ code
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;}
[解决办法]
利用函数模板可保持数组类型,看例子。
C/C++ code
#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;}
[解决办法]
使用数组 引用

热点排行