c - 使用指针向结构成员输入值

标签 c pointers syntax structure

我正在编写一个程序,使用结构体和指针求出两个有理数的加法、乘法和除法。我在用指针输入数字时遇到问题。我的代码应该如何更正?谢谢!

#include <stdio.h>
struct rational
{
    int nu;
    int de;
}*p1,*p2,*p3;
void add()
{
    p1->nu = p1->nu*p2->de + p1->de*p2->nu;
    p3->de = p1->de * p2->de;
    printf("%d\n--\n%d\n",p3->nu,p3->de);
}
void multiply()
{
    p3->nu = p1->nu * p2->nu;
    p3->de = p1->de * p2->de;
    printf("%d\n--\n%d\n",p3->nu,p3->de);
}
void divide()
{
    p3->nu = p1->nu * p2->de;
    p3->de = p1->de * p2->nu;
    printf("%d\n--\n%d\n",p3->nu,p3->de);
}
int main()
{
    int a,b,c,d,choice;
    printf("Enter the first rational number.\n");
    scanf("%d%d",&a,&b);
    p1->nu = a;
    p1->de = b;
    printf("Enter the second rational number.\n");
    scanf("%d%d",&c,&d);
    p2->nu = c;
    p2->de = d;
    scanf("%d",&choice);
    switch (choice)
    {
        case 1: add();
                break;
        case 2: multiply();
                break;
        case 3: divide();
                break;
    }
    return 0;
}

最佳答案

您永远不会初始化指针,因此您提供的代码会调用未定义的行为。在实际使用 p1 之前,p2 和 p3 让它们指向某个现有对象或动态地为它们分配内存。

关于c - 使用指针向结构成员输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16122312/

相关文章:

通过在 Dynamic 中使用指针将一个字符串复制到另一个字符串

c - 如何使用 LLIST *mylist[N];

c - 我正在检查目录中的文件,如果找不到我会抛出错误,否则我会打印匹配项

c++ - 堆上的分配会影响访问性能吗?

c++ - 派生对象与基础对象位于同一位置

flutter - Dart 中可扩展类附近的尖括号是什么意思?

c - VB6 - 如何通过 .tlb 文件将字符串传递给用 C 编写的 DLL

arrays - 在 C 中打印指针本身

javascript - EJS语法: generate a HTML file with a function whose argument is a string

python - 如何指定 scikit-learn 的朴素贝叶斯的先验概率