自定义一个复数结构体 assign()是赋值函数 主函数里对*z1,*z2两个指针进行assign()赋值操作,通过打印可以看出z2被成功赋值,z1却没有被成功赋值

自定义一个复数结构体 assign()是赋值函数 主函数里对*z1,*z2两个指针进行assign()赋值操作,通过打印可以看出z2被成功赋值,z1却没有被成功赋值

问题描述:

自定义一个复数结构体
assign()是赋值函数
主函数里对z1,z2两个指针进行assign()赋值操作,通过打印可以看出z2被成功赋值,z1却没有被成功赋值
不明白为何


#include <stdio.h>

typedef struct complex
{
    float realpart;
    float imagpart;
} complex;

void assign(complex *a, float real, float imag)
{
    a->realpart = real;
    a->imagpart = imag;
};

int main()
{
    complex *z2, *z1;
    float real2 = 3.5, image2 = 6.7;
    assign(z2, real2, image2);
    printf("z2:%f,%f\n", z2->realpart, z2->imagpart);
    float real1 = 2.3, image1 = 4.8;
    assign(z1, real1, image1);
    printf("z1:%f,%f\n", z1->realpart, z1->imagpart);
    return 0;
}

你没有为*z2, *z1分配指向的空间地址啊
引入#include <stdlib.h>

    complex *z2, *z1;
    //为*z2, *z1分配指向的空间地址
    z2 = (complex *)malloc(sizeof(complex));
    z1 = (complex *)malloc(sizeof(complex));


你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include <stdio.h>
#include <stdlib.h>

typedef struct complex
{
    float realpart;
    float imagpart;
} complex;
void assign(complex *a, float real, float imag)
{
    a->realpart = real;
    a->imagpart = imag;
};
int main()
{
    complex *z2, *z1;
    //为*z2, *z1分配指向的空间地址
    z2 = (complex *)malloc(sizeof(complex));
    z1 = (complex *)malloc(sizeof(complex));
    float real2 = 3.5, image2 = 6.7;
    assign(z2, real2, image2);
    printf("z2:%f,%f\n", z2->realpart, z2->imagpart);
    float real1 = 2.3, image1 = 4.8;
    assign(z1, real1, image1);
    printf("z1:%f,%f\n", z1->realpart, z1->imagpart);
    return 0;
}