我有一个让我很困惑的问题......下面我正在调用一个初始化函数:
void Initialize (List *L) {
char* initialize = "initialize";
int i;
for (i=0; i<MAXLISTSIZE; i++) {
strncpy(L->items[i].name,initialize,MAXNAMESIZE);
L->items[i].name[MAXNAMESIZE - 1] = '\0';
L->items[i].grade = 0;
printf("L->items[i].name = %s\n", L->items[i].name);
printf("L->items[i].grade = %d\n", L->items[i].grade);
}
L->count = 0;
}
Run Code Online (Sandbox Code Playgroud)
它似乎工作,我在循环中打印值,这很好.如果我也在main中打印一个相同的循环以进行双重检查它也可以正常工作但是如果我只是在initialize函数之后打印main中的值(在Initialize中没有打印语句)我得到完全垃圾.
似乎我存储我的价值的记忆并不是保持一致,我无法弄清楚为什么.
我需要malloc内存用于结构吗?由于我不需要可变数量的存储,我认为没有必要...我不确定如何去做.
我的结构:
typedef Student Item;
#define MAXLISTSIZE 4
typedef struct {
Item items[MAXLISTSIZE];
int count;
} List;
#define MAXNAMESIZE 20
typedef struct {
char name[MAXNAMESIZE];
int grade;
} Student;
Run Code Online (Sandbox Code Playgroud)
我只是从main调用Initialize:
int main () {
List *newList;
/*call initialize function*/ …Run Code Online (Sandbox Code Playgroud)