c - 访问结构体中包含的数组

标签 c arrays pointers struct

这是我的第一篇文章,所以如果我做错了什么或者这是一个不好的问题,我深表歉意。对于我当前的项目,我正在尝试访问结构指向的数组。 这是结构:

struct DynArr
{
    TYPE *data;     /* pointer to the data array */
    int size;       /* Number of elements in the array */
    int capacity;   /* capacity of the array */
};

我认为更改和访问元素的正确方法是:

    v->data[0]=5.0;
    v->data[1]=10.0;
    printf("The value is %d\n",v->data[0]);
    printf("The value is %d\n",v->data[1]);

我得到的是:

值为1123954688

值为1123954688

有人介意告诉我我做错了什么吗?我在这里环顾四周,但不幸的是找不到任何有帮助的东西。

编辑:感谢您迄今为止收到的回复。内存分配在项目的其他地方。我选择不包含该项目的所有代码,因为目前的代码大约有 400 行,而且我认为包含所有代码不会有帮助,而且需要整理很多代码。如果有必要我会这样做。

edit2:这是精简后的代码。 来自主要:

#include <stdio.h>
#include <stdlib.h>
#include "dynamicArray.h"
int main(int argc, char* argv[])
{
    DynArr *dyn;
    dyn = createDynArr(2);
    printf("\n\nTesting addDynArr...\n");
    addDynArr(&dyn, 3);
    addDynArr(&dyn, 4);
}

来自实现文件:

struct DynArr
{
    TYPE *data;     /* pointer to the data array */
    int size;       /* Number of elements in the array */
    int capacity;   /* capacity ofthe array */
};

DynArr* createDynArr(int cap)
{
    assert(cap > 0);
    DynArr *r = (DynArr *)malloc(sizeof( DynArr));
    assert(r != 0);
    initDynArr(r,cap);
    return r;
}
void initDynArr(DynArr *v, int capacity)
{
    assert(capacity > 0);
    assert(v!= 0);
    v->data = (TYPE *) malloc(sizeof(TYPE) * capacity);
    assert(v->data != 0);
    v->size = 0;
    v->capacity = capacity;
}
void addDynArr(DynArr *v, TYPE val)
{
    /* FIXME: You will write this function */
    v->data[0]=5.0;
    v->data[1]=10.0;
    printf("The value is %d\n",v->data[0]);
    printf("The value is %d\n",v->data[1]); 
}

来自头文件:

#include<math.h>

#ifndef DYNAMIC_ARRAY_INCLUDED
#define DYNAMIC_ARRAY_INCLUDED 1


# ifndef TYPE
# define TYPE     double 
# define TYPE_SIZE sizeof(double)
# endif

# ifndef EQ
# define EQ(A, B) (fabs(A - B) < 10e-7)
# endif

typedef struct DynArr DynArr;

DynArr *createDynArr(int cap);
void addDynArr(DynArr *v, TYPE val);

我相信这就是全部。我知道我传递给函数的值不是正在分配的值,我只是想弄清楚如何通过结构和指针访问数组

最佳答案

感谢大家的时间和帮助。问题最终是我在 printf() 语句中使用 %d 而不是 %f。

关于c - 访问结构体中包含的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31280442/

相关文章:

python - 查找 2 个坐标数组之间的对应关系

javascript - 比较两个对象数组,如果不存在则推送

c - 使用指向结构的指针实现冒泡排序

c - 为什么这个程序的输出是2和0?

CPU-Core线程分类函数

c - 将在派生结构上运行的函数指针转换为在基类型上运行的函数,是 C 语言中未定义的行为吗?

c - 将指针分配给另一个指针,第二个指针是否指向与第一个指针相同的地址?

c - 8051单片机接口(interface)一个4bit LCD

javascript - 比较数组中是否有重复数字的函数

c - 如何在 C 中将 uint8_t* 分配给 uint16_t