gpt4 book ai didi

c - 为什么在尝试使用指针将两个数字相加时出现段错误?

转载 作者:行者123 更新时间:2023-11-30 18:33:19 24 4
gpt4 key购买 nike

#include <stdio.h>


int* add(int* x,int *y)
{
int c = *x + *y;
return &c;
}



int main()
{
int a,b;
int* t;

scanf("%d%d",&a,&b);
t=add(&a,&b);

printf("the sum of two numbers is :%d",*t);
return 0;
}


我正在尝试使用指针将两个数字相加。我将两个数字的地址传递给函数,然后将地址返回到存储求和运算值的变量。我在同一个上出现细分错误。我究竟做错了什么 ?

最佳答案

您将返回一个指向该函数的局部变量的指针。结果,指针具有无效的值,并且程序具有未定义的行为,因为在退出函数后,指向的变量没有生效。例如,通过调用printf可以覆盖其内存。

为了使您的程序正常工作,请定义变量static。例如

int * add( const int *x, const int *y )
{
static int c;

c = *x + *y;

return &c;
}

关于c - 为什么在尝试使用指针将两个数字相加时出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58146348/

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