gpt4 book ai didi

c - 使用结构体指针的两个函数(读取和显示数组)

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

我刚刚开始学习指向结构的指针,但我很困惑。我必须创建一种数据 ARRAY 类型(与包含整数的数组相关联。),就像一个结构,其中包含:数组元素的数量和数组的元素存储在内存的一部分(堆)中,动态分配。

所以我写道:

typedef struct ARRAY
{
int nrElem; // number of elements
int *v[100];
};

现在我需要创建 2 个函数,一个用于从键盘读取数组,第二个用于使用我声明的结构来显示它。

我尝试过,但我被卡住了。

void arrayDisplay(ARRAY *ps)
{
int i;
for(i=0;i<pd->nrElem;++i)
{
printf("%d",)
}
}

void readArray(ARRAY *ps)
{
int i;
for(i=0;i<pd->nrElem;++i)
{
printf("%d",)
scanf("%d",&);
}
}

如何继续?

最佳答案

您的数据结构中需要一个整数数组 int v[100];,而不是指针数组 int *v[100];

参见下面的代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct ARRAY
{
int nrElem; // number of elements
int v[100];
} ARRAY;

void arrayDisplay(ARRAY *ps)
{
int i;
for(i=0;i<ps->nrElem;++i)
{
printf("%d\n", ps->v[i]);
}
}

void readArray(ARRAY *ps)
{
int i;
for(i=0;i<ps->nrElem;++i)
{
printf("%d: ", i);
scanf("%d",&ps->v[i]);
}
}

int main()
{
ARRAY a;

a.nrElem = 5;
readArray(&a);
arrayDisplay(&a);

return 0;
}

如果你确实想使用 int 指针数组,你需要先分配该数组。以及 printf 和 scanf 的不同级别的重定向。但我不确定为什么要为这样的整数数组分配内存。

typedef struct ARRAY
{
int nrElem; // number of elements
int *v[100];
} ARRAY;

void arrayDisplay(ARRAY *ps)
{
int i;
for(i=0;i<ps->nrElem;++i)
{
printf("%d\n", *ps->v[i]);
}
}

void readArray(ARRAY *ps)
{
int i;
for(i=0;i<ps->nrElem;++i)
{
printf("%d: ", i);
scanf("%d",ps->v[i]);
}
}

int main()
{
ARRAY a;
int i;

a.nrElem = 5;
for(i=0;i<a.nrElem;++i) {
a.v[i] = (int*)malloc(sizeof(a.v[i]));
}
readArray(&a);
arrayDisplay(&a);

return 0;
}

关于c - 使用结构体指针的两个函数(读取和显示数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59365962/

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