从字符串数组打印其中一个字符串时出现空指针赋值错误

Null pointer assignment error while printing one of the string from array of strings

本文关键字:字符串 一个 空指针 错误 赋值 打印 数组      更新时间:2023-10-16
void main()
{
    char *str[3];
    cin>>str[0];
    cin>>str[1];
    cout<<str[1];
}

输出:

你好

你好

输出后,它要么挂起,要么给我一个空指针分配错误。这是为什么呢?

您已将三个指针分配给 char 字符串,但没有实际字符串的内存。在你更好地理解指针之前,我建议你只使用这样的东西:

char one[10];
char two[10];
char three[10];
cin >> one;
cin >> two;
cout << two;

例如,您正在使用str[0]。这是一个字符指针,或指向一个或多个字符的指针。

但是,您没有将其指向任何内容。因此,从代码访问 NULL 或随机地址构成了未定义的行为。

你需要更好地理解指针,并确保你的指针确实指向某些东西。

您尚未为 C 样式字符串分配任何内存。

如果要使用字符串而没有内存分配和释放麻烦(仅举几例(,请切换到std::string

此外,main函数返回 int 。 总是。

试试这个:

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::string;
int main(void)
{
  string str[3];
  cin >> str[0];
  cin >> str[1];
  cin >> str[2];
  cout << "[0]: " << str[0] << "n";
  cout << "[1]: " << str[1] << "n";
  cout << "[2]: " << str[2] << "n";
  return EXIT_SUCCESS;
}

此外,请考虑使用 std::vector 而不是数组。

相关文章: