函数内的数组和指针都是属于函数栈空间。如果把数组或指针返回给外部指针,会发生什么?
1先看看第一种,返回数组;
#include "stdio.h"
char * get_c()
{
char ch[]="hello"; //这是一个栈空间
char *p; //这也是栈空间
p=ch;
printf("%x\n",&ch);
printf("%x\n",p);
printf("%s\n",p);
return ch;
}
int main(int argc, char const *argv[])
{
char *ch;
ch=get_c();
printf("%x\n",ch);
printf("%s\n",ch);
while(1);
return 0;
}
2看看返回指针的情况:
#include "stdio.h"
char * get_c()
{
char ch[]="hello"; //这是一个栈空间
char *p; //这也是栈空间
p=ch;
printf("%x\n",&ch);
printf("%x\n",p);
printf("%s\n",p);
return p;
}
int main(int argc, char const *argv[])
{
char *ch;
ch=get_c();
printf("%x\n",ch);
printf("%s\n",ch);
while(1);
return 0;
}
这个数组了,系统或者任务会主动的修改里面的数据,导致就算这个指针指向这个内存,值可能已经不是自己想要的了,也就是
一个野指针吧。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- kqyc.cn 版权所有 赣ICP备2024042808号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务