所以这个函数体在呢内存中就销毁了。你即使能从函数中返回一个局部变量。你再去读这个地址的时候。东西都不在了。3、还有一点。编译器在分配函数的空间的时候,地址不是固定的。所以你每次运行程序,你会发现 int a=3 printf(f"%d",&a),不都是一样的。所以你的问题很明了了。
局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。上面是摘抄 局部变量的特点是:随函数调用时创建 随函数结束时析构(销毁)设想 如果返回了一个局部变量的指针 而恰好 局部变量偏偏又在函数结束后销毁 但指针并没有被销毁 ...
#include <stdio.h> //指针编程原则:不要返回函数栈内的局部变量的地址 //换句话说,不要返回指向栈内局部变量的指针 //因为出了函数,局部变量被销毁,这个地址也就没有意义了。 int *add(int l,int r) { int ret; ret=l+r; return &ret; //不能返回地址,可以加个指针变量,存储地址返回,比如int *p...