返回本地变量的地址是危险的
//返回本地变量的地址是危险的,本地变量结束后地址会重新分配给其他地方使用
//返回全局变量或静态本地变量的地址是安全的的
//返回在函数内malloc的内存是安全的的,但是容易造成问题
//最好的做法是返回传入的指针
#pragma warning(disable : 4996)
#include <iostream>
#include<stdio.h>
int *f(void);
int *g(void);
int main() {
int *p = f();
printf("*p = %d\n", *p);
g();
printf("*p = %d\n", *p);
return 0;
}
int *f(void) {
int i = 123;
printf("i = %d\n", i);
printf("&i = %p\n", &i);
return &i;
}
int *g(void) {
int k = 78;
printf("k = %d\n", k);
printf("&k = %p\n", &k);
return &k;
}
/*------------------------------
i = 123
&i = 001FFD60
*p = 123
k = 78
&k = 001FFD60
*p = 78
-----------------------------------*/
//不要使用全局变量来在函数间传递参数和结果
//尽量避免使用全局变量
//丰田汽车的案子
//使用全局变量和静态本地变量的函数是线程不安全的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构