gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:13:21 25 4
gpt4 key购买 nike

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

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/

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