c - 在 C 中从 typedef 结构设置和获取数组的值

标签 c arrays struct typedef

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/

相关文章:

C - 指向动态结构数组的指针

c++ - "struct"和结构成员前缺少 "struct"字有什么区别

c - 编写自己的Gstreamer脚本时没有反应

c - Linux 内核 3.16 上的 Moxa RealTTY 模块编译错误

c - 在 char 指针数组中存储字符串的错误

java - 傅立叶变换字节数组

javascript - 将数组项复制到另一个数组中

c++ - C中简单表达式的奇怪输出,为什么?

ios - 在 Objective-C 中如何将数组从一个类传递到另一个类?

c - 引用结构体值,但不断出现很多错误