• 返回值是指针的情况


    第一种:传出指向静态内存或者已经分配动态内存的指针

    #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
    ",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
    msg:%s
    ",p->number,p->msg);
    	free_unit(p);
    	p=NULL;
    	return 0;
    }
    
    
  • 相关阅读:
    使用Python创建自己的Instagram滤镜
    TensorFlow v2.0实现逻辑斯谛回归
    自动驾驶研究回顾:CVPR 2019摘要
    dp cf 20190613
    简单搜索 kuangbin C D
    树形dp compare E
    区间dp E
    Codeforces Round #564 (Div. 2)
    网络流 + 欧拉回路 = B
    网络流 A
  • 原文地址:https://www.cnblogs.com/muahao/p/7224894.html
Copyright © 2020-2023  润新知