c++函数返回值是数组问题

问题描述

c++函数返回值是数组问题

比如现在要求定义一个函数fun(),在主函数调用时直接用fun();就能输出在fun函数里定义好的一个字符串,那要fun函数的返回值怎么返回才行,为什么我返回指针但打印出来却不是正确结果?求大神解释

解决方案

 一般来说,出于内存管理的需要,让主程序来分配内存,传指针。比如scanf函数,就是通过这个方式输入值。
比如
void getstr(char * buffer)
{
char str[] = "hello world";
strcpy(buffer, str);
}
int main()
{
char a[100];
getstr(a);
printf("%s", a);
}

解决方案二:

返回char * 或者String

解决方案三:

你可能返回的是局部变量的指针,当局部执行结束后该变量就会销毁了,这样结果就不正确了

解决方案四:

不要返回一个局部变量的地址

解决方案五:

[转载]函数返回值为数组以及数组作为参数传递的问题
C++中函数返回值能否是数组?
函数返回值为数组

解决方案六:

楼主要不贴一下代码?
要注意的地方是:不要返回一个局部变量的地址

时间: 2024-11-01 22:13:22

c++函数返回值是数组问题的相关文章

调用函数-怎样将二维数组作为函数返回值并在主函数中调用

问题描述 怎样将二维数组作为函数返回值并在主函数中调用 我的调用函数是这样的:float(*TIME(float f_1[3][100]))[100]{ for(i=0;i<=2;i++) { L_1[i][0]=-(a_1*f_1[i][0-3+100]+a_2*f_1[i][0-2+100]+a_3*f_1[i][0-1+100]+a_4*f_1[i][0]+a_5*f_1[i][0+1]+a_6*f_1[i][0+2]); L_1[i][1]=-(a_1*f_1[i][1-3+100]+a

代码-LUA 读取C#中返回值为数组的函数

问题描述 LUA 读取C#中返回值为数组的函数 请教大师们,一个问题:我在C#中写了一个返回值为数组的函数float[] data_handle1() ,想在Lua中调用此函数?在lua 中如何操作读取这个函数的返回值呢?C# 的函数具体代码如下: public float[] data_handle1() //串口20个字节回复字节解析 { ------------------------ float[] i = new float[8]; int p = 0; for (int loop =

谨防数组函数返回值造成的内存泄露

数组作为函数返回值时,非常容易引起内存泄露. 问题现象:Build应用程序后,提示非法内存访问:可是Compile应用程序却没有这个问题. 问题思考:函数返回值,在被调用函数中负责释放:局部变量也是在函数调用结束后在函数内被释放.如果一个函数调用了另外一个函数,却没有使用被调用函数的返回值,就有可能造成内存泄露.   //数组作为函数返回值 function StrToPByte(Const str: string;Var arrByte: array of byte): PByte;var 

LUA 读取C#中返回值为数组的函数

问题描述 请教大师们,一个问题:我在C#中写了一个返回值为数组的函数float[]data_handle1(),想在Lua中调用此函数?在lua中如何操作读取这个函数的返回值呢?C#的函数具体代码如下:publicfloat[]data_handle1()//串口20个字节回复字节解析{------------------------float[]i=newfloat[8];intp=0;for(intloop=2;loop<18;loop++){i[p]=data[loop]*256+data

C语言 用指针作为函数返回值详解_C 语言

C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> #include <string.h> char *strlong(char *str1, char *str2){ if(strlen(str1) >= strlen(str2)){ return str1; }else{ return str2; } } int main(){ cha

c++-在写函数时 是不是要把返回值都放在形参表里?把函数返回值设定为true/false?

问题描述 在写函数时 是不是要把返回值都放在形参表里?把函数返回值设定为true/false? 在写函数时 是不是要把返回值都放在形参表里?把函数返回值设定为true/false? 解决方案 主要还是看程序需要把,这种想法只是对于一些内存申请操作来说,函数在结束后就将函数内申请的控件释放.如果已经在外部申请好了内存,是可以当做返回值返回的.所以说并不一定就要把返回值放在形参表里. 解决方案二: 这也是一种方式,尤其对于要返回多个结果的时候,一般通过参数来传递结果.然后函数返回值来表示函数是否调用

Python函数返回值实例分析

  本文实例讲述了Python的函数返回值用法.分享给大家供大家参考.具体分析如下: 最近学一些Python的基本用法,看到定义函数,发现似乎只能返回一个返回值,想想matlab里返回多个返回值多方便啊,网上查了查,看到有返回多个值的方法. python 函数返回值有两种形式: 1 返回一个值. 2 返回多个值. 现看看返回一个值的吧. ? 1 2 3 4 def firstvalue(a,b): c = a + b return c print firstvalue(1,2) #结果:3 再看

Shell中函数返回值超出问题

  这篇文章主要介绍了Shell中函数返回值超出问题,shell中通过return返回是有限制的,最大返回255,超过255,则从0开始计算,需要的朋友可以参考下 1.前言 快半年没有写博客了,荒废了很久,工作中的杂事太多,自己越来越懒了.为了鞭策自己成长,还是要坚持写写博客,记录自己的成长. 2.shell函数介绍 语法: 代码如下: [ function ] funname [()] { action; [return int;] } 说明: (1)可以带function fun() 定义,

函数返回值的检查方法----历史遗留问题?

问题描述 网上众多的源码,在创建事件或者创建线程之后,会将其句柄与INVALID_HANDLE_VALUE进行比较,检查函数的执行是否成功,如下所示:m_hExitEvt=CreateEvent(NULL,FALSE,FALSE,NULL);if(m_hExitEvt==INVALID_HANDLE_VALUE){returnFALSE;}问题出现了:在d:ProgramFilesMicrosoftVisualStudio.NET2003vc7PlatformSDKincludepdh.h和d: