[英]two functions (read and display an array) using pointers to structures
我刚开始学习指向结构的指针,我很困惑。我必须创建一种数据 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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.