比如程序1:int*getIntArr(){intans[3]={1,2,3};returnans;}intmain(){int*p=getIntArr();for(inti=0;i<3;i++)printf("%d\n",*(p+i));}比如程序2:intgetInt(){intans=3;returnans;}intmain(){intp=getInt();printf("%d\n",p);}可以知道第一个程序会打印乱码的,第二个会正常打印。返回变量在系统中具体是怎么样一个流程?栈在退出时,会申请一块地址,把返回值存储起来返回,还是直接返回我们指定的地址,比如上面的ans。附一个完整的程序吧:#include#include#include#includeusingnamespacestd;int*f(){inttmp[12];for(inti=0;i<12;i++)tmp[i]=i;returntmp;}vectortestVector(){vectortmp;tmp.push_back(1);tmp.push_back(2);tmp.push_back(3);returntmp;}stringtestString(){stringtmp;tmp="123";returntmp;}constchar*testCharArr(){return"123";}intmain(){int*p;p=f();for(inti=0;i<12;i++)printf("%d\n",*p+i);vectort_vec=testVector();for(inti=0;iprintf("%d\n",t_vec[i]); printf("%s\n",testString().c_str());printf("%s\n",testCharArr());return0;}
慕姐4208626
天涯尽头无女友
相关分类