数组默认通过ref或value传递数组吗? 谢谢。数组如何传递?
Q
数组如何传递?
19
A
回答
27
它们作为指针传递。这意味着关于数组大小的所有信息都将丢失。您最好建议使用std :: vectors,它可以按照您的选择通过值或引用传递,因此保留所有信息。
下面是一个将数组传递给函数的示例。注意,我们必须明确指定元素的数量,因为sizeof(p)会给出指针的大小。
int add(int * p, int n) {
int total = 0;
for (int i = 0; i < n; i++) {
total += p[i];
}
return total;
}
int main() {
int a[] = { 1, 7, 42 };
int n = add(a, 3);
}
5
数组是特殊的:它们总是作为指针传递给数组的第一个元素。
23
首先,您不能在数组副本的意义上按值传递数组。如果您需要该功能,请使用std::vector
或boost::array
。
通常情况下,通过值传递指向第一个元素的指针。该过程中数组的大小会丢失,并且必须单独传递。下面的签名都是相同的:
void by_pointer(int *p, int size);
void by_pointer(int p[], int size);
void by_pointer(int p[7], int size); // the 7 is ignored in this context!
如果你想通过引用传递,大小类型的一部分:
void by_reference(int (&a)[7]); // only arrays of size 7 can be passed here!
你经常用的模板参考合并过程,这样你就可以使用具有不同静态已知尺寸的功能:
template<size_t size>
void by_reference(int (&a)[size]);
希望这会有所帮助。
相关问题
- 1. 你如何传递数组?
- 2. 如何传递数组?
- 3. 如何传递两个数组参数
- 4. 如何传递数组作为参数?
- 5. 如何浮动数组传递给glVertexAttribPointer
- 6. 如何将数组传递给方法?
- 7. 在Nancyfx中如何传递数组Ids
- 8. 如何正确传递JSON数组?
- 9. 如何在OOP PHP中传递数组?
- 10. 如何从Asp.net数组传递给JavaScript
- 11. 如何将参数传递给组件?
- 12. 如何通过HiddenType传递数组?
- 13. 如何通过$ .get传递数组?
- 14. 如何将数组传递给AppDelegate.m?
- 15. 如何在http头中传递数组?
- 16. JAVA-如何将数组传递给@NamedNativeQuery
- 17. 如何将值传递给JavaScript数组?
- 18. 如何传递数组维度?
- 19. 如何传递组件中的参数?
- 20. 如何返回并传递数组?
- 21. 如何在voldemort中传递sting数组
- 22. 如何传递数组索引
- 23. 如何将数组传递给jQuery $ .ajax?
- 24. 如何在Qt中传递数组?
- 25. 如何将数组传递给MongoRepository @Query?
- 26. 传递mysql_fetch_array数组()
- 27. 如何在JavaScript中将数组数组传递给函数?
- 28. 如何将值从数组传递到数组
- 29. 如何将JavaScript数组的数组传递给Web服务?
- 30. 如何使用jsp将java数组传递给javaScript数组?
感谢Neil,但正如我在昨天的一篇文章中提到的,我目前正在从TC++ PL开发excersizes,并且我必须使用oridinary数组。我只是想知道是否有必要写下如下内容:void f(int(&a)[size]);还是仅仅将它声明为不带ref的数组就足够了。 – 2010-04-01 11:12:33
因此,通过这个答案判断他们传递的值是一个指针的大小。我对吗? – 2010-04-01 11:14:01
@atch从TC++ PL,恕我直言,不从C++学习的好理由。 – 2010-04-01 11:14:22