intarr_t的定义:
typedef struct {
int* data;
unsigned int len;
} intarr_t;
首先,我需要为数组的给定索引设置一个值,并相应地返回类型定义的状态代码。
我为数组设置值的工作是:
intarr_result_t intarr_set( intarr_t* ia,
unsigned int index,
int val )
{
if(ia == NULL) // if ia is null
{
return INTARR_BADARRAY;
}
unsigned int len = ia->len;
if(index >= 0 && index < len) // if index is valid
{
ia[index].data = &val; // set value at ia[index] to val
return INTARR_OK;
}
else // if index is not valid
{
return INTARR_BADINDEX;
}
}
其次,我需要将数组的值设置为指针变量。
我获得值(value)的工作是:
intarr_result_t intarr_get( const intarr_t* ia,
unsigned int index,
int* i )
{
if(ia == NULL)
{
return INTARR_BADARRAY;
}
unsigned int len = ia->len;
if((index >= 0 && index < len) && i != NULL)
{
i = ia[index].data;
return INTARR_OK;
}
else
{
return INTARR_BADINDEX;
}
}
在测试自己时,我从我设置的值中获取了一个值,但自动标记表示每个函数在同一索引处返回的值彼此不同。我不确定我哪里做错了以及应该如何解决。请帮帮我。
最佳答案
改变
ia[index].data = &val;
...
i = ia[index].data;
至
ia->data[index] = val;
...
*i = ia->data[index];
关于c - 在 C 中从 typedef 结构设置和获取数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27213012/