typedef struct
{
double real; // 复数的实部
double imag; // 复数的虚部
}Complex;
void InitComplex(Complex* z) {
z = new Complex; // 给z分配了一块内存空间
}
void AssignComplex(Complex *&z, double a, double b) {
z->real = a;
z->imag = b;
}
int main()
{
while (1) {
double a1, b1;
Complex* z1 = NULL;
//z1 = new Complex; // 给z1分配了一块内存空间
// InitComplex(z1); // 无法用函数进行初始化
cout << "请输入第一个复数的实部:";
cin >> a1;
cout << "请输入第一个复数的虚部:";
cin >> b1;
AssignComplex(z1, a1, b1);
cout << "第一个复数为:";
Display(z1);
}
}
用的是Visual Stdio 2019
用结构体创建指针,
1.为什么初始化指针为NULL,报错:
0x004C2572 处(位于 AssignComplex.exe 中)引发的异常:
0xC0000005: 写入位置 0x00000000 时发生访问冲突。
2.为什么我调用函数为其分配空间,报错:
错误C4700:使用了未初始化的局部变量"z1"
3.只有直接为其分配空间才能运行:
z1 = new Complex;
4.为什么这个指针一定要为其分配空间才可以,初始化为NULL不可以吗