C/ c++中数组的参数传递和作用域
Parameter passing and scope of array in C/C++
这个问题一直困扰着我。我有一个数组,在它的声明范围内,我可以使用sizeof
运算符来确定其中元素的数量,但是当我把它传递给一个函数时,它解释为只是一个指向数组开头的指针,sizeof
运算符只是给我这个指针变量的大小。如以下示例所示,
#include<iostream>
int count(int a[]){
return (sizeof(a)/sizeof(int));
}
int main(){
int a[]={1,2,3,4,5};
std::cout << sizeof(a)/sizeof(int) << " " << count(a) << std::endl;
return 0;
}
代码输出为5 2
。我如何将数组传递给函数,以便我可以仅使用sizeof
操作符来确定其大小,并且不必将额外的大小作为参数传递给该函数?
template<size_t N>
int count(int (&a)[N])
{
return N;
}
你不能那样做。没有办法传递一个数组,使其携带其大小信息。你必须自己做。您必须将计数作为附加参数传递。
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 未在作用域中声明unordered_map
- 我正在开发服务器,ip作为参数传递不起作用
- 将非左值作为常量引用参数传递.临时是在本地作用域还是在调用方作用域中创建的?
- 未经治疗的例外,无效的参数传递给了一个认为无效参数作用的函数
- C++:此插入表达式的作用以及作为函数参数传递时的工作方式
- 将对象的属性传递到方法时出现作用域问题.(opencv相关)
- 按值确定类的作用域并传递类
- 创建从外部作用域重新声明模板参数的typedef的负面影响
- 当我把一个方法作为参数传递时,我怎么能忽略作用域呢
- C/ c++中数组的参数传递和作用域
- 线程数组并尝试将多个参数传递给函数不起作用
- 使用goto传递POD堆栈变量时的作用域和生命周期
- 在包含作用域的函数调用期间持续的临时函数参数
- 在c++中,当我通过引用传递一个对象时,它超出了作用域
- 将指针传递给函数只会改变函数作用域中的值
- 函数参数名称的作用域
- 避免类作用域,以便将成员函数作为函数指针传递
- 如何传递作用域指针而不是this指针
- 友元函数的奇怪行为 -- 对象指针传递时的作用域"globalized"?