gpt4 book ai didi

c++ - 接受 C/C++ 数组类型的函数

转载 作者:太空狗 更新时间:2023-10-29 23:31:49 25 4
gpt4 key购买 nike

在将数组作为参数传递时,g++ 似乎忽略了数组大小的差异。即,即使使用 -Wall,以下编译也没有警告。

void getarray(int a[500])
{
a[0] = 1;
}

int main()
{
int aaa[100];
getarray(aaa);
}

现在,我理解了传递指针的底层模型,显然我可以将函数定义为 getarray(int *a)。然而,我预计 gcc 至少会在我明确指定数组大小时发出警告。

有什么办法可以绕过这个限制吗? (我 guest boost::array 是一种解决方案,但我有很多使用 c 样式数组的旧代码已提升为 C++...)

最佳答案

数组作为指向其第一个参数的指针传递。如果大小很重要,则必须将函数声明为 void getarray(int (&a)[500]);

C 习惯用法是像这样传递数组的大小:void getarray(int a[], int size);
C++ 习惯用法是使用 std::vector(或最近的 std::tr1::array)。

关于c++ - 接受 C/C++ 数组类型的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1372186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com