use*_*821 4 c c++ arrays pointers
我的问题是:当我在C中编写函数原型时,如下所示:
void foo(int *vector);
Run Code Online (Sandbox Code Playgroud)
这是一回事:
void foo(int vector[MAX_LENGTH]);
Run Code Online (Sandbox Code Playgroud)
到函数,总是作为指针传递?代码是一样的吗?提前致谢.
是的,数组类型在传递给函数时会隐式转换为指针类型.
所以
void foo(int *a)并且void foo(int a[])完全相同.
您可以sizeof()在函数定义中轻松检查使用运算符
例如
void foo(int a[])
{
std::cout<<sizeof(a); //prints sizeof(int*)
}
int main()
{
int a[]={1,2,3,4};
foo(a);
}
Run Code Online (Sandbox Code Playgroud)
EXTRA(在函数内打印数组的大小)
[C++ Only]
template<typename T,size_t n>
void size_of_array(T (&a)[n]) //Array passed by reference. Template argument deduction
{
std::cout<<sizeof(a); //prints sizeof(n*sizeof(int))
}
int main()
{
int a[]={1,2,3,4,5};
size_of_array(a);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1242 次 |
| 最近记录: |