热爱学习的呆萌的文青 2015-12-21 12:51 采纳率: 54.8%
浏览 1545
已采纳

关于指针问题,报错:flag是nullprt

图片说明
程序如下,请指出错误代码,谢谢。。
// a.h

 #ifndef            _A_H
#define     _A_H
#define     int32_t   int
#define     uint32_t     unsigned int
#define     TMax      1;
#define     TMin      -1;
#define     NULL        0;

int32_t  sat_add(int32_t, int32_t, int32_t*);
uint32_t  sat_sub(uint32_t, uint32_t, uint32_t*);

#endif

//middle.c

 #include "a.h"
uint32_t   sat_add(uint32_t x, uint32_t y, uint32_t* flag)
{
    uint32_t  r = x + y;
    if ( x > 0 && y > 0 && r < 0)               //正溢出
    {
            *flag = TMax;        
    }
    else if ( x < 0 && y < 0 && r > 0)      //负溢出
    {
            *flag = TMin;
    }
    else            //不溢出
    {
            *flag = NULL;
    }
    return  r;
}

uint32_t  sat_sub(uint32_t  x, uint32_t  y, uint32_t*  flag)
{
    uint32_t  r = x - y;
    if (x - r != x - (x - y)) {
        *flag = TMin;
    }
    else {
        *flag = NULL;
    }
    return r;
}

//main.c

 #include<stdio.h>
#include "a.h"
void main() {
    int32_t  c = 0;
    int32_t  x1, y1,t1;
    int32_t  *p1 = NULL;
    uint32_t x2, y2,t2;
    uint32_t *p2 = NULL;
    printf_s("1  判断加法溢出\n");
    printf_s("2  判断减法溢出\n");
    printf_s("3  退出\n");
    printf_s("输入你的命令:");
    scanf_s("%d", &c);
    while (1) {
        switch (c) {
        case 1:
            printf_s("输入两个有符号数:");
            scanf_s("%d %d", &x1, &y1);
            t1=sat_add(x1,y1,p1);
            printf_s("%d %d", t1,*p1);
            break;
        case 2:
            printf_s("输入两个无符号数:");
            scanf_s("%d %d", &x2, &y2);
            t2=sat_sub(x2,y2,p2);
            printf_s("%d %d", t2,*p2);
            break;
        case 3:
            break;
        default:
            printf_s("没有该指令,重新输入:");
            break;
        }
        if (c == 3) break;
    }
}
  • 写回答

1条回答 默认 最新

  • ysuwood 2015-12-21 13:29
    关注

    p1、p2初始化为NULL,在加减函数里如果溢出被赋值,这么使用是错误的。
    p1、p2没有指向具体空间,数存哪里?
    可以这样:

    int32_t tp1;
    p1=&tp1;
    uint32_t tp2;
    p2=&tp2;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试