C语言的return能返回地址值吗?

如题所述

可以。返回指针实际上就是地址。
例如:
#include<stdio.h>
#include<stdlib.h>
// 动态分配 n 个字节,返回 char *
char *f(char *name, int n){name = (char*) malloc(sizeof(char)*n);
return name;
}

// 动态分配 n 个字节,返回 void *
void *v(char *name, int n){name = (char*) malloc(sizeof(char)*n);
return name;
}

main(){ char *name;
char *p;
int *x,i;
p = f(name,50); // p 分配 50个字节,等于声明了 char p[50]
scanf("%s",p); // 使用 char p[50]
printf("%s\n",p);

x = (int *) v(name,40); // 给 x 分配 40个字节,(并强制转换)等于声明了 int x[10];for (i=0;i<10;i++) x[i]=i+1; //使用 int x[10];
for (i=0;i<10;i++) printf("%d ",x[i]);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-29
可以返回任意类型的值,但必须和函数前说明的返回类型相同
第2个回答  2013-03-29
可以,但定义函数时需对应返回值类型为对应地址类型的指针
第3个回答  2013-03-29
返回指针 和数组 就是返回地址
第4个回答  2013-03-29
应该是可以的,不过在声明函数时必须指定的函数类型为int*,而且地址所指向的内容也只能是int型数据
相似回答