当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《接受C/C++数组类型的函数》经验,为你挑选了1个好方法。

在将数组作为参数传递时,似乎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-style数组,它被提升为C++ ...)



1> rpg..:

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

C语言是传递数组的大小,如下所示:void getarray(int a [],int size);
C++习惯用法是最近使用std :: vector(或std :: tr1 :: array).


使用int a [500]只需将指针传递给int.使用int(&a)[500]将引用传递给500个元素的数组.它们是不同的类型,编译器看到不匹配.顺便说一下,通过使用int(&a)[500],你不能再传递一个用new int [500]分配的数组了!
推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有