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