c语言子函数返回数组中函数能返回一个数组吗

C语言函数返回值不能直接写数组
C语言返回值不能直接写数组
#ifndef _VMATH_H
#ifdef _cplusplus
extern "C" {
typedef float Matrix44f[16];
Matrix44f translate(float x, float y, float z);
Matrix44f scale(float x, float y, float z);
Matrix44f rotateX(float radian);
Matrix44f rotateY(float radian);
Matrix44f rotateZ(float radian);
Matrix44f rotateXYZ(float radian, float x, float y, float z);
Matrix44f perspectiveFrustum( float left, float right, float top, float bottom, float near, float far); //透视投影
Matrix44f orthoPerspect( float left, float right, float top, float bottom, float near, float far);
//正交投影
#ifdef _cplusplus
如上写法编译器会报错,可改为指针类型.
float *translate(float x, float y, float z);求问,可以让函数返回一个数组吗?例如char a[ ],而非char *a【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:539,456贴子:
求问,可以让函数返回一个数组吗?例如char a[ ],而非char *a收藏
例如下面这段代码,想要根据一个字母字符,返回由其在ascii字符集中的后三个字母所组成的字符串。char *charToStr(char aChar){
char str[] = {aChar + 1, aChar + 2, aChar + 3};
char *ptr =}这代码是错的,ptr被返回时指向的字符串是正确的,但是将其传给其他函数,马上变成一个垃圾制。我纠结了好久,才发现可能是因为其指向的字符串str随着栈的弹出而消失了。那么应该怎么修复这个函数呢?能不能直接返回一个数组,而不是一个指针,就像返回int而不是返回int *一样。
从参数传指针进去
一个函数分配的数组一出函数肯定没了,只能外面传个数组进去直接赋值
只能返回堆内存里分配的内存块
你字符串长度已知,所以你可以返回一个新开辟的内存地址,然后取三字节
#include&stdio.h&#include&string.h&#include&assert.h&typedef union{
char b[4];}RET;unsigned int f(char s[]){
RET r={0};
int len=strlen(s);
assert(len&=3);
for(i=len-3,j=0;i&++i,++j)r.b[j]=s[i];
return r.a;}int main(){
char s[]=&abcde&;
puts(r.b);
return 0;}
逗C别想了,直接套struct。这坨迟早也得塞FAQ列提纲。
字符串?无非是typedef struct stupid_null_terminated_string{size_char*}自己脑补ctor/dtor之类。你要直接返回包含数组的东西,那么大小只能写死,否则(比如柔性数组成员)没法直接用自动对象并且用起来非常容易炸。
看我的处理方法:#include &stdlib.h&#include &stdio.h&char* charToStr(char c){char *p;p=(char*)malloc(4*sizeof(char));p[0]=c;p[1]=c+1;p[2]=c+2;p[3]='\0';}int main(int argc, char* argv[]){char c, *s;c='d';s=charToStr(c);printf(&%s\n&, s);}
并不能返回Array类型
必须返回指针吧
登录百度帐号推荐应用C语言 函数find功能是:在指针p所指数组中,查找值为x的元素,找到后,返回该元素的下标,否则返回_编程 - QQ志乐园
您的当前位置: &
C语言 函数find功能是:在指针p所指数组中,查找值为x的元素,找到后,返回该元素的下标,否则返回-1,改正程序中语句错误,能够正确运行、
来源: |人气:826 ℃|时间: 11:00:15
为了解决用户可能碰到关于"C语言 函数find功能是:在指针p所指数组中,查找值为x的元素,找到后,返回该元素的下标,否则返回-1,改正程序中语句错误,能够正确运行、"相关的问题,志乐园经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"C语言 函数find功能是:在指针p所指数组中,查找值为x的元素,找到后,返回该元素的下标,否则返回-1,改正程序中语句错误,能够正确运行、"相关的详细问题如下:
补充:#include&#include&const&int&N=10;&int&find(int&*p,int&n,int&x)&//1&{&int&i&;&&&&&&&&//&2&&*(p+n)=x;&&&&&&//3&&while(*p+i!=x)&&&&//4&&i++;&&&&&&&&//5&&if(i!=n)&&&&&&&//6&&return&1;&&&&&&//7&&else&&&&&&&&&&return&-1;&&&&&&//8&}&void&main()&{int&i,pos,x;&int&*p=new&int&[N];&for(i=0;i&N;I++)&&SPAN&&*(p+i)=rand()%50;&for(i=0;i&N;I++)&&SPAN&&cout&&*(p+i)&&'t';&cout&&"ninput&x:&";&cin&&x;&pos=find(p,N,x);&if(pos!=-1)cout&&"index=&"&&POS&&"&char?&LAYOUT-GRID-MODE:&18&MARGIN-LEFT:&,value="&&*(p+pos)&&&&else&cout&&"No&find!"&&ENDL;&&SPAN&&}答案:(1)&2行语句改为&int&i=0;(2)&4行语句改为&while(*(p+i)!=x);(3)&7行语句改为&return&i&。答案:(1)&2行语句改为&int&i=0;(2)&4行语句改为&while(*(p+i)!=x);(3)&7行语句改为&return&i&。分析:在函数find中,变量i没有赋初值,按照规则任意取值,所以程序不正确。在while循环条件中*p+i表示指针p指向地址元素值加i,不能起着指针移动作用,改为*(p+i)表示数组第i个元素值起着顺序查找作用。在函数中如果找到查找元素返回其下标,7行应该是return&i&,而不是return&1。
||||点击排行拒绝访问 | www.1398.org | 百度云加速
请打开cookies.
此网站 (www.1398.org) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(e343d7-ua98).
重新安装浏览器,或使用别的浏览器欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 3337 人关注过本帖
标题:函数返回值为一个数组,想要在主函数中用到这个数组,不知道怎么办了,求助 ...
等 级:论坛游民
帖 子:23
专家分:17
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:5&&&
函数返回值为一个数组,想要在主函数中用到这个数组,不知道怎么办了,求助!!!
定义了函数bubble_sort(int N,int A[N]),其返回值为A[N],现在主函数中需要用到这个A[N],请问怎么调用它?
&&1#include &stdio.h&
&&4 int bubble_sort(int N,int A[N])
&&6&&&&&&&&&int i,j,
&&7&&&&&&&&&for(i=0;i&N-1;i++)
&&8&&&&&&&&&{
&&9&&&&&&&&&&&&&&&&&for(j=0;j&N-i-1;j++)
&10&&&&&&&&&&&&&&&&&{
&11&&&&&&&&&&&&&&&&&&&&&&&& if(A[j]&A[j+1])//升序排列
&12&&&&&&&&&&&&&&&&&&&&&&&& {
&13&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&temp=A[j];
&14&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&A[j]=A[j+1];
&15&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&A[j+1]=
&16&&&&&&&&&&&&&&&&&&&&&&&& }
&17&&&&&&&&&&&&&&&&&}
&18&&&&&&&&&}
&19&&&&&&&&&for(i=0;i&=N-1;i++)
&20&&&&&&&&&{
&21&&&&&&&&&&&&&&&&&printf(&%d &,A[i]);
&22&&&&&&&&&};
&23&&&&&&&&&return A[N];//返回为A[N]
&28 void insert(int N,int X,int A[N])
&30&&&&&&&&&int i,j;
&31&&&&&&&&&int B[N+1];
&32&&&&&&&&&for(i=0;i&N;i++)
&33&&&&&&&&&{
&34&&&&&&&&&&&&&&&&&if(A[i]&N&&A[i+1]&=N)
&35&&&&&&&&&&&&&&&&&{
&36&&&&&&&&&&&&&&&&&&&&&&&& for(j=N-1;j&i;j--)
&37&&&&&&&&&&&&&&&&&&&&&&&& {
&38&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&B[j+1]=A[j];
&39&&&&&&&&&&&&&&&&&&&&&&&& }
&40&&&&&&&&&&&&&&&&&&&&&&&& B[i+1]=X;
&41&&&&&&&&&&&&&&&&&&&&&&&& for(j=0;j&=i;j++)
&42&&&&&&&&&&&&&&&&&&&&&&&& {
&43&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&B[j]=A[j];
&44&&&&&&&&&&&&&&&&&&&&&&&& }
&45&&&&&&&&&&&&&&&&&}
&46&&&&&&&&&&&&&&&&&
&47&&&&&&&&&}
&48&&&&&&&&&for(i=0;i&=N;i++)
&49&&&&&&&&&{
&50&&&&&&&&&&&&&&&&&printf(&%d&&&,B[i]);
&51&&&&&&&&&}
&55 main()
&57&&&&&&&&&int n,i,x;
&58&&&&&&&&&int b[n],*p;
&59&&&&&&&&&printf(&Please set the size of array:\n&);
&60&&&&&&&&&scanf(&%d&,&n);
&61&&&&&&&&&int a[n];
&62&&&&&&&&&printf(&Please input some number:\n&);
&63&&&&&&&&&for(i=0;i&n;i++)
&64&&&&&&&&&{
&65&&&&&&&&&&&&&&&&&scanf(&%d&,&a[i]);
&66&&&&&&&&&}
&67&&&&&&&&&p=bubble_sort(n,a);//这里不能这样使用指针&&&&&
&68&&&&&&&&&for(i=0;i&n;i++)
&69&&&&&&&&&{
&70&&&&&&&&&&&&&&&&&b[i]=*p;
&71&&&&&&&&&&&&&&&&&p++;;
&72&&&&&&&&&}
&73&&&&&&&&&printf(&What number you want to insert:\n&);
&74&&&&&&&&&scanf(&%d&,&x);
&75&&&&&&&&&insert(n,x,b);//这里需要调用到A[N]
&76&&&&&&&&&return 0;
话说函数的返回值不能作为另一个函数的参数来引用吗?
搜索更多相关主题的帖子:
等 级:论坛游民
帖 子:21
专家分:84
&&得分:10&
我觉得这个最好用指针.....
等 级:论坛游民
帖 子:21
专家分:84
可以用数组名作为形参......函数就可以对数组进行操作,不需要返回值
等 级:论坛游民
帖 子:21
专家分:84
额,说错了,应该是作实参而不是形参
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
谁说不能?
putchar(getchar());
就是最简单的例子咯……
等 级:新手上路
返回值用指针代替数组.
第一个函数表示看不懂.只是实现整数数组按小到大的排序?
版权所有,并保留所有权利。
Powered by , Processed in 0.036253 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

更多关于 c语言返回数组的函数 的文章

 

随机推荐