char* stack_string(){
char c[10] = "hello";
return c;//这里会直接报错
}
因为不能直接将一个数组直接返回
在栈使用完之后会自动销毁//
我自己的理解:即在函数中,不可以直接返回一个数组,因为存不住
char* heap_string(){
char *p = (char*)malloc(10);//堆空间不会因为代码结束后而销毁
strcpy(p,"hello");
return p;
}
///但是当利用指针p去指向一个堆空间时(在函数创建好),在主函数中将p赋给一个新的指针,这样是成立的。
总结:即不可以直接将数组返回;正确方式:创建一个堆空间和一个指向它的指针,再返回它的指针。