gpt4 book ai didi

c - 下面写的两组代码有什么区别

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:42 25 4
gpt4 key购买 nike

#include<stdio.h>

int *fun();

main()
{
int *i;
i=fun();
printf("cbgg\n");
printf("%d",*i);
getch();
}

int *fun()
{
int k;
k=5;
return (&k);
}

虽然上面写的程序为 i 打印了一个垃圾值,但是下面写的程序工作正常,即输出是绝对相关的,即 5。为什么会这样?

#include<stdio.h>

int inc();

main()
{
int i;
i=inc();
printf(“cbgg\n”);
printf(“%d”,i);
getch();
}

int inc()
{
int k;
k=5;
return (k);
}

最佳答案

主要区别在于,这一个通过返回局部变量(分配在堆栈上)的地址做了一件非常讨厌的事情 - 稍后使用返回的指针会调用未定义的行为。

int *fun()
{
int k;
k=5;
return (&k);
}

另一个只是从 fun() 例程中无害地返回 5。

关于c - 下面写的两组代码有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24199340/

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