从字符串数组打印其中一个字符串时出现空指针赋值错误
Null pointer assignment error while printing one of the string from array of strings
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
而不是数组。