关于C语言指针函数的使用问题

2025-04-23 19:03:43
推荐回答(1个)
回答1:

你的代码里犯了c语言里的一个很常见的错误:函数返回了一个局部变量地址
int *add(int a, int b)
{
int c = a + b;
return &c; //返回c的地址,c在add函数执行完以后就没了,返回它的地址是没有意义的
}
int* p = add(a, b); //p指向的内存随时可能被改写,你看到的正好就是输出完以后它就变了,(因为add函数从执行完到输出间隔的时间"很短",3还存在,而从程序暂停到你观察这段时间"很长",内存已经被修改了,你可以再输出一次*p看看)
你把c定义成静态的,再看看
int *add(int a, int b)
{
static int c = a + b; //静态的c
return &c; // 函数结束后,c还存在
}