我在定义自定义函数时,需要把主程序中的数组传递到自定义函数中使用,但是发现在自定义函数中无法获取这个数组的长度,在网上一查了解到如何数组作为参数传递时只能作为指针传递,没有数组长度那肯定不便于数组的操作.于是我想到了两个方法:
1,这个方法我觉得太麻烦,所以也不想多说,就是用循环读取指针的值是否为NULL.这个想法只是理论上的,我想应该可以能实现,但是会写很多代码,所以我也就不实验了.
2,第二种很简单,就是在传递前先获取到数组的长度,然后把它作为参数传递进去就可以了.
3,后来通过搜索还了解到一个方法,这个是C++才能用的,就是利用定义一个模板就可以把数组引入到自定义函数中,这样就是在自定义函数中也可以获取得到数组的长度了.其实和第2种方法的代码量差不多,只是多了一个模板应用的知识点.
这里先说一下如何获取数组长度的方法:
int len= sizeof(a) / sizeof(a[0]);
第3种方法的代码如下:
template <class T> //定义一个模板
void postValude(T& a) //利用模板引用数组a
{
int len= sizeof(a) / sizeof(a[0]); //获取数组长度
for (int i = 0; i < len; i++)
a[i] = i;
return;
}
int main()
{
int a[10] ; //定义一个有长度的数组
postValude(a); //定义函数,这里有了模板就直接引用数组就可以了
for (int i = 0; i < 10; i++)
{
cout << a[i] << endl; //将数组显示出来看结果是否正确
}
return 0;
}