繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM