我想输出子函数里面的a数组,这段代码为什么不行呢?
#include<stdio.h>
#include<string.h>
char *fun()
{
char a[] = {'1','2'};
return a;
}
int main()
{
char *b;
b = fun();
printf("%s", b );
}
我想输出子函数里面的a数组,这段代码为什么不行呢?
#include<stdio.h>
#include<string.h>
char *fun()
{
char a[] = {'1','2'};
return a;
}
int main()
{
char *b;
b = fun();
printf("%s", b );
}
char *fun()
{
static char a[] = {'1','2'};
return a;
}
函数部分改成这样就可以了
你错误的原因是:
你让函数返回了一个指针让b指向它是不假,
但是 这个函数中返回的指针a是一个局部变量, 返回之后, 指针a就会被释放掉, a数组的内容也不存在了
那么此时 b指向了哪里呢 指向的目标a数组已经消失了
指向了被撤销的内存地址 而这个地址上的内容已经没了
此时你再打印b的内容当然打不出来