gpt4 book ai didi

c - C中数组内的范围

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:07 24 4
gpt4 key购买 nike

想出了一个算法,想请教一下。有什么方法可以在数组中设置一系列值吗?

例如

int N = 10;
int array[N] = {2,6,5,9,4,3,5,9,4,9};

并使用循环在每次通过时增加起始值。

for (int A = 1; A < N - 2; A++) {
for (int B = 1; B < N - 1; B++) {
int ProfitA = Sum(array[0...A-1]);
int ProfitB = Sum(array[A...A+B-1]);
int ProfitC = Sum(array[A+B...N-1]);
}
}

那么有什么方法可以使用上面的 C 伪代码来设置每个数组中值的范围吗?

最佳答案

不,C 没有内置这样的功能。此外,一旦将数组传递给函数(所谓的“衰减到指针”),就没有获取数组上边界的功能。

这个问题有两个标准的解决方案:

  • 传递指向第一个数组元素的指针和元素的数量,或者
  • 传递一个指向整个数组的指针,一个指向初始元素的索引,以及一个指向最后一个元素的索引

第一种方法是这样的:

int sum_array(int* array, size_t len) {
int res = 0;
for (size_t i = 0 ; i != len ; i++) {
res += array[i];
}
return res;
}
...
int ProfitA = sum_array(array, A);
int ProfitB = sum_array(array+A, B);
int ProfitC = sum_array(array+A+B, N-A-B);

第二种方法是这样的:

int sum_array(int* array, int first, int last) {
int res = 0;
for (int i = first ; i <= last ; i++) {
res += array[i];
}
return res;
}
...
int ProfitA = sum_array(array, 0, A-1);
int ProfitB = sum_array(array, A, A+B-1);
int ProfitC = sum_array(array, A+B, N-1);

关于c - C中数组内的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28263464/

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