gpt4 book ai didi

c - printf函数会影响变量的生命周期吗?

转载 作者:行者123 更新时间:2023-12-02 09:36:45 25 4
gpt4 key购买 nike

这是我的简单 C 程序。

#include <stdio.h>
float*multiply(int, float);

main(){
int i =3;
float f = 3.50, *p;
p = multiply(i, f);
printf("%u\n", p);
printf("%f\n", *p);
return 0;
}

float *multiply(int ii, float ff){
float product = ii * ff;
printf("%f\n", product);
printf("%u\n", &product);
return (&product);
}

该程序给出以下输出:-

enter image description here

但是,当我注释掉 multiply 函数中的两个“printf”语句时,它给出以下输出:-

enter image description here

我确信我没有犯任何愚蠢的错误。我只是注释掉两行。谁能告诉我为什么会发生这种情况?这是操作系统/系统相关的问题吗?printf 函数如何延长变量的生命周期?

最佳答案

您正在返回本地基于堆栈的变量product的地址,这将导致未定义的行为。

此外,要打印指针的值,应使用 %p 而不是 %uhttp://www.cplusplus.com/reference/cstdio/printf/

关于c - printf函数会影响变量的生命周期吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25268753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com