可以。返回指针实际上就是地址。
例如:
#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]);
}