1
8
如果您真的想通过引用传递数组,可以这样做:
在C中,它不具有引用,可以通过指针传递数组(当然,这也在C++中工作):
|
2
3
C++:
C:C中没有引用 请注意,无论如何传递数组,无论是否通过引用,都不会复制数组,因此您将得到原始指针。您也可以像这样传递这个数组:
|
3
2
感谢所有参与此活动的人!sskuce利用“容器”提供了一个非常好的解决方案。我考虑过这个,但不太喜欢额外的东西。 我在一点点混乱之后才意识到詹姆斯·麦克内利斯一直都给出了答案。所以…以下是我喜欢的解决方案,没有容器,也没有索引算术(注意括号):
再次感谢大家。 |
4
1
编辑:我将原始答案保留在下面,因为我认为人们有必要了解数组实际上是如何传递给函数的,以及它们是如何在内存中布局的,但是经过进一步的思考,我认为有一种简单而正确的方法来完成您想要的工作。 将数组封装在结构中,例如
这个结构允许您维护封装数组的布局信息,并且不必担心讨厌的索引算法。 -----旧答案----- 传递对数组的引用是没有用的,除非您想更改数组的大小或布局(无论如何,静态大小的数组都不能这样做)。即使通过“value”传递数组,也将获得对数组元素的引用(或指针)。也就是说,如果您声明您的函数:
像这样称呼它
如果要保存指向数组的指针以供以后在库函数等中使用,可以执行以下操作:
在这一点上变得很棘手-你必须知道PA是如何被铺设的?内存不足。我认为C已经标准化了“行主顺序”,所以数组应该放在内存中,比如:
所以,在索引处获取一个元素
基本上,将每个索引乘以可以被该顺序的索引引用的元素数,例如
就像我说的,这很棘手。查看维基百科上的文章 Array Data Structures 和 Row-major order 以便更好地了解这些东西的布局。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |