我想为我的实用程序声明一个类对象数组。我尝试声明如下,但我得到一个例外。无法理解我做错了什么。这是代码部分。
#include<iostream>
#include<conio.h>
using namespace std;
struct charFreqPair{
public: charFreqPair();
charFreqPair(char,int);
~charFreqPair(){}
char ch;
int freq;
};
charFreqPair::charFreqPair(){
}
charFreqPair::charFreqPair(char c , int f){
ch = c;
freq = f;
}
int main(int argc , char **argv){
char *string;
cout<<"Enter String"<<endl;
cin>>string;
charFreqPair array[128] ;
getch();
}
如果我通过评论运行上述代码: charFreqPair数组[128]; 一切正常。但是,如果我按原样运行上面的代码,它会抛出以下异常:
String1.exe中0x00d31556处的第一次机会异常:0xC0000005:访问冲突写入位置0x00d320fd。
我无法理解在声明类对象数组时我做错了什么。
答案 0 :(得分:2)
错误不是由数组引起的,而是由于您使用cin
将输入保存到未初始化的指针中这一事实:
char *string;
cin>>string;
char *string
未初始化,因此取消引用它会导致异常。您应该使用std::string
:
std::string;
cin >> string;
答案 1 :(得分:1)
你不能只写一个没有指向任何地方的指针。难怪你得到例外,你正在写随机记忆。
在使用之前分配您的string
。