使用指针作为函数参数读取并显示姓名和年龄

时间:2019-03-03 18:49:10

标签: 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 *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;
}

运行此命令时,出现错误消息:Process terminated with status -1073741819 (0 minute(s), 2 second(s))。是因为我没有为name分配任何内存吗?你能解释一下我在做什么错吗?

1 个答案:

答案 0 :(得分:2)

您没有分配Get-IscsitargetPortal,这会导致您的应用程序崩溃,因为name可能通过尝试在应用程序空间之外写入内存而导致访问冲突。

您将需要scanf一些空间:

malloc

或在堆栈上分配一些空间(并在最后删除对char *name = (char*) malloc(sizeof(char) * 256); 的调用):

free(name)