返回值是指针的情况
第一种:传出指向静态内存或者已经分配动态内存的指针
#cat get_a_day.c
#include <stdio.h>
#include <string.h>
const char *msg[] = {
"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"
};
char *get_a_day(int idx){
static char buf[20];
strcpy(buf,msg[idx]);
return buf;
}
int main(void){
printf("%s %s\n",get_a_day(1),get_a_day(0));
return 0;
}
第二种: 在函数中分配动态内存并且传出指向这块内存的指针
#cat malloc_p.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
int number;
char *msg;
} unit_t;
unit_t *alloc_unit(void){
unit_t *p = malloc(sizeof(unit_t));
if(p == NULL){
printf("out of memory");
exit(1);
}
p->number=1;
p->msg=malloc(20);
strcpy(p->msg,"hello muahao");
return p;
}
void free_unit(unit_t *p){
free(p->msg);
free(p);
}
int main(void){
unit_t *p = alloc_unit();
printf("number:%d\nmsg:%s\n",p->number,p->msg);
free_unit(p);
p=NULL;
return 0;
}
muahao@aliyun.com