C++ - 函数,参数和指针 - 访问冲突

Mar*_*ley 0 c++ pointers function

我决定学习C++以前编程知识非常有限.我目前正在以下的书跳进C++亚历克斯·阿兰.我已经点了指针的章节,作为练习问题的一部分,我遇到了以下问题:

  1. 编写一个函数,提示用户输入他或她的名字和姓氏,作为两个单独的值.此函数应通过传递给函数的其他指针(或引用)参数将两个值都返回给调用者.首先尝试使用指针然后使用引用.

这是我写的代码:

#include <iostream>

void getDetails(char * n, char * s)
{
    std::cout << "Input name: ";
    std::cin >> *n;

    std::cout << "\n";

    std::cout << "Input surname: ";
    std::cin >> *s;
}

int main()
{
    char *name = NULL;
    char *surname = NULL;

    getDetails(name, surname);

    std::cout << "Name: " << *name << "\n";
    std::cout << "Surname: " << *surname << "\n";

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我一直遇到访问冲突错误,我完全不知道为什么.

  1. 我究竟做错了什么?
  2. 为什么这是错的?

Tho*_*ber 8

其实你有两个问题:

  1. 你没有保留内存namesurname(这就是你得到访问冲突错误的原因)
  2. 您正在读取一个字符cin(因为您正在取消引用一个char*导致sigle char的字符)

您可以通过使用std::string而不是使用来解决这两个问题char*