【发布时间】:2015-11-06 12:42:37
【问题描述】:
我决定在以前的编程知识非常有限的情况下学习 C++。我目前正在关注Alex Alllain 所著的Jumping into C++ 一书。我已经阅读了关于指针的章节,作为练习题的一部分,我遇到了以下问题:
- 编写一个函数,提示用户输入他或她的名字和姓氏,作为两个单独的值。此函数应通过传递给函数的附加指针(或引用)参数将这两个值返回给调用者。尝试先使用指针,然后再使用引用。
这是我写的代码:
#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;
}
我一直遇到访问冲突错误,我完全不知道为什么。
- 我做错了什么?
- 为什么会出错?
【问题讨论】:
-
仅通过这样的指针接收输入是危险的,因为用户输入的文本可能比您的空间多(在这种情况下实际上没有空间)。您应该使用让您检查输入量的方法,或者使用更简单、更安全的
std::string。