C 使用指针作为函数参数读取并显示名称和年龄
我想写一个函数来读取某人的姓名和年龄,并在使用指针作为参数后显示他们C 使用指针作为函数参数读取并显示名称和年龄,c,function,pointers,C,Function,Pointers,我想写一个函数来读取某人的姓名和年龄,并在使用指针作为参数后显示他们 #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 *n
#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;
}
#包括
#包括
#包括
无效读取(字符**名称,整数*年龄)
{
printf(“名称:”);
scanf(“%s”,*名称);
printf(“年龄:”);
scanf(“%d”,年龄);
}
无效写入(字符*名称,整数)
{
printf(“%s,%d\n”,姓名,年龄);
}
内部主(空)
{
字符*名称;
智力年龄;
阅读(姓名和年龄);
写(姓名、年龄);
免费(姓名);
返回0;
}
当我运行此命令时,会收到错误消息:
进程终止,状态为-1073741819(0分钟,2秒))
。是因为我没有为name
分配任何内存吗?您能解释一下我做错了什么吗?您没有分配名称,这会导致您的应用程序崩溃,因为scanf
试图在应用程序空间之外写入内存,可能会导致访问冲突
您需要malloc
一些空间:
char *name = (char*) malloc(sizeof(char) * 256);
或者在堆栈上分配一些空间(并在末尾删除对free(name)
的调用):
在指针指向有效对象之前,不能取消引用指针<代码>名称
未初始化。而且你免费它而不分配它,这是错误的。因此,是的,错误是因为您没有给name
@SergeBallesta任何内存,谢谢!我忘了做那件事,我不明白出了什么问题。谢谢!正如其他人指出的,我忘记分配内存了。
char name[256];