#include <stdio.h> #include <string.h> int * getarr(int * ipt); int main() { int a = 99; char * ch ; int *p = getarr(&a); //gets(ch); printf("%d\n", *p ); /* 坑:将局部变量a的pointer作为返回值返回 后果:函数执行完毕后会释放内存,销毁函数内定义的局部变量、局部数组、形式参数 这里的销毁并不是把内存抹掉,而是释放内存空值权,当有其他数据要使用此内存时,会被占用 情况1:调完getarr后没有任何操作,那么返回的指针指向的是a 情况2:调完getarr后有其他操作,其他操作产生的数据可能会占用a的内存 */ } int * getarr(int * c) { int a = 100; return &a; }