这里是我的代码: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;'? –
第一个工作,因为你不走运。第二个不行,因为你很幸运。 –