100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 错误:返回局部变量数组名 \ 解决方案

错误:返回局部变量数组名 \ 解决方案

时间:2019-03-17 22:46:23

相关推荐

错误:返回局部变量数组名 \ 解决方案

//对于数组来说,它是一个局部变量,是放在栈里面的,函数返回之后,变量被销毁,内存被回收。#include <stdio.h>char* get_str(){char str[] = {"hello"}; //错误结果return str;}int main(){char* p = get_str();printf("%s/n", p);return 0;}【解决方案】====================(1)用字符串常量指针代替局部变量的数组名//str指针,其值是一个常量,而常量是放在数据段里面的,即便函数返回了,数据段里面的常量数据也还会在,直到程序结束才会消失#include <stdio.h>char* get_str(){char *str = {"hello"}; //正确结果,因为str指向字符串常量return str;}int main(){char* p = get_str();printf("%s/n", p);return 0;}(2)把数组声明为全局的变量(3)使用静态数组,即static char str[] = {"hello"}; (4)最好的解决方案:在主函数中申请空间,调用函数进行字符串的赋值操作,最后在主函数中释放申请的空间。#include <iostream>using namespace std;void f(char* buffer, int size){strncpy(buffer,"ABCD",size);}int main(){int size = 100;char *buffer = (char*)malloc(size); //分配buffer空间f(buffer,size); //调用函数,把指定size长度的字符串赋值给buffercout<<buffer<<endl;free(buffer); //释放buffer空间return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。