2
|
Illarion Kovalchuk · 技术社区 · 14 年前 |
![]() |
1
2
好的,您的基本需求是查询资源,并将返回的数据缓存在内存中,以避免多次访问。
问题2是如何设计一个允许客户机/用户代码与数据交互的api。
型号#1提供迭代器/游标功能
模型#2是在malloced缓冲区中返回整个对象,并让客户机管理整个过程
型号#3。如果您与客户机数组结合,则可以使用Model#1一次返回多个值, 但是 如果有更多的值,那么get\u something()将必须构建一个缓存,客户端仍然需要迭代。 |
![]() |
2
5
一种选择是根本不修改数组,而是返回所需的大小作为返回结果。然后,调用者必须使用至少此大小的数组再次调用函数。 |
![]() |
3
2
使用
|
![]() |
4
2
|
![]() |
5
1
动态分配数组,即使用malloc(),然后在函数中使用realloc()或释放上一个列表并分配另一个,填充它并返回新的大小。对于第二种方法,您可以使用返回值返回新的大小,但是要更新数组的调用者地址,您需要将函数更改为接受int**而不是int* |
![]() |
6
0
|
![]() |
7
0
一种方法是将数组填充到最大值,然后返回 可用的元素数。这样调用者就可以检查他是否需要再次调用这个函数(参见markbyers的答案)。
|
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |