当前位置:首页 > return > 正文

return是返回哪里

  • return
  • 2024-06-25 15:32:04
  • 1168
C语言的return能返回地址值吗?能。 返回指针实际上就是地址。
例如:
#include
#include
//动态分配n个字节,返回char*
char*f(char*name,intn){name=(char*)malloc(sizeof(char)*n);
returnname;
}
//动态分配n个字节,returnvoid*
void*v(char*name,intn){name=(char*)malloc(sizeof(char)*n);
returnname;
}
main(){char*name;
char*p;
int*x,i;
p=f(name,50);//分配p50个字节,对应声明charp[50]
scanf("%s",p);//使用charp[50]
printf("%s\n",p);
x=(int*)v(name,40);//分配40个字节给x,(并强制转换)相当于声明intx[10];for(i=0;i<10;i++)x[i]=i+1;//使用intx[10];
for(i=0;i<10;i++)printf("%d",x[i]);
}

C语言中,return语句怎么样返回一个数组?

首先,C/C++只能返回指向数组的指针,而不能返回整个数组。 即使它返回一个指向数组的指针,如果函数中的数组本质上是自动的,也是危险的。 这是更准确的表达方式。 如果想从函数返回所有auto数组元素值,有办法吗?他们有。 因为C/C++允许返回结构体,所以你可以定义一个结构体模板,将数组排序为成员,在函数中临时声明结构体变量并处理里面的数组,返回结构体变量并使用与变量接收者相同的结构体类型调用主函数可以间接实现“数组返回”。 示例代码如下:

#include"stdio.h"
structA{
intm[30];//排列arrayminstructA
};
fun(intn){
inti,j,k;
structAs;//声明auto类型结构体变量s的函数 for(j=)。 n-1,i=0;i k=s.m[i],s.m[i]=s.m[j],s.m[j]=k;
returns;//结构体变量s
}
intmain(intargc,char*argv[]){
Aa;//main调用函数中同样的语句类型结构变量a接受函数fun的返回值
inti;
a=fun(15);//fun乘15(不超过30,仅示例)并返回结果to
for(i=0;i<15;i++)//查看输出是否按相反顺序...
printf("%d",a.m[i]);
printf("\n");
Return0;
}

处理结果如下: