【发布时间】:2020-07-30 18:19:42
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char* name;
}Student;
int main() {
int n,i;
printf("Enter the number of student: ");
scanf("%d",&n);
Student *ptr = (Student*) malloc(n * sizeof(Student));
for( i = 0; i < n ;i++) {
printf("Enter the name of student: ");
scanf("%s", (ptr + i)->name);
}
return EXIT_SUCCESS;
}
我不明白为什么这段代码不起作用,谁能帮助我?我认为问题是动态内存分配,但我无法解决。
【问题讨论】:
-
你好,也许初始化
name指针? -
请注意,
(Student *)只有在需要 C++ 兼容性时才需要。 -
@IronMan 但如果代码是“ char * name; scanf("%s", name);"退出代码为 0。因此(在我看来)名称的初始化没有问题。
-
char *name创建一个指向char的指针,命名为name,而一个指针只能存储内存地址,不能在其中存储字符串。要存储字符串,您需要一个char数组(足够长)。 -
表达式
(ptr + i)->name的类型是pointer to char,对吧?你认为(ptr + i)->name指向的地方是什么?
标签: c loops struct dynamic-memory-allocation