簡體   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