gpt4 book ai didi

c - 在 C 特定索引范围内分配

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:35 25 4
gpt4 key购买 nike

是否可以像在 fortran 中那样在 C 中分配特定的索引范围:

allocate(f(istart-1:iend+1), u(istart-1:iend+1), uold(istart-1:iend+1))


do i = istart, iend
.
.
.
end do

最佳答案

您想要的基本上归结为设置数组的下限和上限,如 Basic(和表面上的 Fortran):Dim Matrix(3, 4) As Integer

作为一种用途,我可以考虑处理稀疏数组中的一部分,而不必分配整个数组。

在 C 中,您可以通过使用一个用作偏移量的整数变量来实现这一点,举个简单的例子:

int getElement(int *arr, int index, int offset)
{
return *(arr + (index-offset));
}

也可以使用更精细的方法,例如:

typedef struct MY_ARR {
int *arr;
int lowerbound; // from
int upperbound; // up and including
} t_myArr;

t_myArr *newArr(int lower, int upper)
{
t_myArr *p;
if (!(p= malloc(sizeof(t_myArr))) return 0;
if (!(p->arr= calloc(sizeof(int),upper-lower+1))) {free(p); return 0;}
p->arr.lowerbound= lower;
p->arr.upperbound= upper;
return p;
}
int getElement(t_myArr *p, int element)
{
if (!p || p->arr.lowerbound<element || element>p->arr.uperbound) return 0;
return(*(p->arr+element-lowerbound));
}

本质上,您现在已经创建了自己的整数数组类型。

关于c - 在 C 特定索引范围内分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42438634/

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