我想编写一个函数来读取某人的姓名和年龄,以及一个在使用指针作为参数后显示他们的函数。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void read(char **name, int *age)
{
printf("name: ");
scanf("%s", *name);
printf("age: ");
scanf("%d", age);
}
void write(char *name, int age)
{
printf("%s, %d\n", name, age);
}
int main(void)
{
char *name;
int age;
read(&name, &age);
write(name, age);
free(name);
return 0;
}
当我运行它时,我收到错误消息:进程终止,状态为 -1073741819(0 分钟,2 秒)
。是不是因为我没有给name
分配内存?你能解释一下我做错了什么吗?
最佳答案
您没有分配 name
,这会导致您的应用程序崩溃,因为 scanf
可能通过尝试在应用程序空间之外写入内存而导致访问冲突。
您将需要 malloc
一些空间:
char *name = (char*) malloc(sizeof(char) * 256);
或者在堆栈上分配一些空间(并在最后删除对 free(name)
的调用):
char name[256];
关于c - 使用指针作为函数参数读取并显示姓名和年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54972438/