gpt4 book ai didi

c - 具有相同主体和不同参数的两个不同函数在同一内存位置返回值

转载 作者:行者123 更新时间:2023-11-30 14:53:32 24 4
gpt4 key购买 nike

我无法清楚地理解这里发生的事情。

#include  <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int *f(int x){
int p;
p=x;
return &p;
}

int *g(int x){
int y;
y=x;
return &y;
}


int main(){
int *x,*y;
x=f(1000);
y=g(250);
*x = *x + 250;
printf("%d\n",*y);
return 0;

}

输出:- 500

“*x = *x + 250”行如何更改“*y”值?为什么输出不是 250?

最佳答案

int *f(int x){
int p;
p=x;
return &p;
}

在此函数中(以及在 g 中),您将返回局部变量的地址。当调用者使用这个地址时,它是无效的,因为它引用了一个被销毁的变量(就像使用指向freed动态内存的指针)。这会导致未定义的行为。

关于c - 具有相同主体和不同参数的两个不同函数在同一内存位置返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47158211/

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