這裏是我的代碼:C++:爲什麼我得到分段錯誤?
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct Computer
{
char * model;
char * assembler;
int processorInt;
};
int main()
{
Computer comp;
char* model;
char* assembler;
int processorInt;
cin>>model;
cin>>assembler;
cin>>processor int;
comp.model = model;
comp.assembler = assembler;
comp.processorInt = processorInt;
return 0;
}
//如果我這樣做,它的工作原理,但如果我用另一種方式做,這讓段錯誤
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct Computer
{
char * model;
char * assembler;
int processorInt;
};
void setValues()
{
Computer comp;
char* model;
char* assembler;
int processorInt;
cin>>model;
cin>>assembler;
cin>>processor int;
comp.model = model;
comp.assembler = assembler;
comp.processorInt = processorInt;
}
int main()
{
setValues();
return 0;
}
那麼是什麼原因呢?
我的目標是創建結構,其中我可以節省約每一個「電腦」的一些信息,然後做一個可能性編輯任何結構,然後通過procesorInt整個數組排序的數組。但我甚至無法創建一個正常的可編輯結構。
你輸入一個未分配,未初始化的指針。你需要使它指向一些預先分配的內存,爲它分配內存(涉及第一部分),或者最重要的是使用'std :: string'。 – chris
什麼是'cin >>處理器int;'? –
第一個工作,因爲你不走運。第二個不行,因爲你很幸運。 –