取消对NULL指针xxx的引用

010100100000CS 2020-07-16 06:36:17
#include<stdio.h>
void splitfloat(float x, int* intpart, float* fracpart) {
float number;
int count = 0;
number = x;
while (number >= 1) {
count++;
number -= 1;
}
intpart = &count;
fracpart = &number;
*intpart = count;
*fracpart = number;
}
int main(void)
{
float x, * fracpart1;
int* intpart1;
scanf_s("%f", &x);
fracpart1 = 0;
intpart1 = 0;
splitfloat(x, intpart1, fracpart1);
printf("intpart is %d,fracpart is %f", *intpart1, *fracpart1);
return 0;
}

大佬们能把我看下吗?
...全文
2081 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2020-07-17
  • 打赏
  • 举报
回复
inputpart1指向了局部变量,因为局部变量的生命周期是从定义开始到函数返回结束,因此输出已经无效的局部变量是未定义性行为~
ikaoni 2020-07-17
  • 打赏
  • 举报
回复
楼上说得对。代码稍微修改了一下。
#include<stdio.h>

void splitfloat(float x, int *intpart, float *fracpart) {
    int count = 0;
    while (x >= 1) {
        count++;
        x -= 1;
    }
    *intpart = count;
    *fracpart = x;
}
int main(void)
{
    float x, fracpart1;
    int intpart1;
    printf("Enter a number: ");
    scanf_s("%f", &x);
    splitfloat(x, &intpart1, &fracpart1);
    printf("intpart is %d, fracpart is %f\n", intpart1, fracpart1);
    return 0;
}
Simple-Soft 2020-07-16
  • 打赏
  • 举报
回复
临时变量地址赋给了指针

70,014

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧