我是C新學員。我對這個下面的代碼感到困惑,它的目標是打印結構數組中的所有元素。我知道它可以直接在main()中完成,但是當我將printf(....)放入一個函數並調用此函數時,我無法傳遞結構數組。 有人知道爲什麼。我很不高興..謝謝如何將結構數組傳遞給C中的函數?
我的結構包括關鍵字和它的數量。初始化包含常量集的名稱和它的計數爲0。
#include <stdio.h>
#include <stddef.h>
#define NKEYS (sizeof keytab/ sizeof (Key))
void traversal(Key tab[], int n); // define the function
struct key // create the structure
{ char *word;
int count;
};
typedef struct key Key; //define struct key as Key
Key keytab[]={ // initiate the struct array
"auto",0,
"break",0,
"case",0,
"char",0,
"const",0,
"continue",0,
"default",0,
"void",0,
"while",0,
};
int main()
{
traversal(keytab,NKEYS);
return 0;
}
void traversal(Key tab[], int n){
int i;
for (i=0; i<n; i++){
printf("%s\n",keytab[i].word);
}
}
初始化不應該起作用。你有一個'struct'數組,所以你需要嵌套大括號。對於函數也使用原型聲明器,'#define'在最好情況下是危險的(使用類型的名稱作爲參數;不要硬編碼名稱,這是災難的原因)。 – Olaf
'struct key {...}'和'typedef struct key key;'移動到頂部(之前.'void遍歷(Key tab [],int n);') – BLUEPIXY
當然:「我沒有通過結構數組「不是特定的**問題描述。 – Olaf