C语言-动态分配malloc

使用malloc进行动态分配

/*
动态分配内存
*/ 

#include <stdio>
#include <stdlib>

int main(){
    int *p_val = (int *) malloc(5 * sizeof(int))
    if (!p_val) {
        return -1; 
    }
    free(p_val); 
    p_val = NULL; 
    return 0; 
}

进行动态分配时, 将输入的地址存入

/*
动态分配内存演示
*/ 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
    int num = 0; 
    int *p_val = NULL; 
    srand(time(0)); 
    p_val = (int *)malloc(sizeof(int) * 7); 
    if (p_val) { 
       //把动态分配内存当作数组编写循环依次处理其中的每个存储区 
       for (num = 0;num <= 6;num++) { 
           *(p_val + num) = rand() % 36 + 1; //将数据存入地址中 
       } 
       for (num = 0;num <= 6;num++) {
           printf("%d ", *(p_val + num)); 
       }  
       printf("\n"); 
       free(p_val); 
       p_val = NULL; 
    } 
    return 0; 
}

申请一个动态内存地址用于进行数据的存放

/*
动态分配内存演示
*/
#include <stdio.h>
#include <stdlib.h>
/*
int *read(void) { 
    static int val = 0; 
    printf("请输入一个数字");
    scanf("%d", &val);
    return &val;  
} 
*/
int *read(void) { 
    int *p_val = (int *)malloc(sizeof(int)); 
    if (p_val){ 
       printf("请输入一个数字:");
       scanf("%d", p_val); 
    } 
    return p_val; //分支结束后设置返回值,可以保证即使内存分配失败也可以返回空地址 
}
int main() { 
    int *p_val = NULL; 
    p_val = read(); 
    if (p_val) { 
        printf("输入的数字是%d\n", *p_val);
        free(p_val);  //在主函数里释放动态分配内存 
        p_val = NULL;  //将指针设置为空指针
    }
    else {
        printf("动态内存申请失败"); 
    }
    return 0; 
} 

 使用动态内存进行矩形的中心点求解

/*
编写函数计算中心点的位置信息
*/ 
#include <stdio.h>
#include <stdlib.h>
typedef struct { 
    int col; 
    int row; 
} pt;  

typedef struct { 
    pt pt1; 
    pt pt2; 
} rect;  

pt * center(const rect r) {
    pt *p_val = NULL;  
    p_val = (pt *)malloc(sizeof(pt));
    if (p_val){
        p_val->row = (r.pt1.row + r.pt2.row) / 2; 
        p_val->col = (r.pt1.col + r.pt2.col) / 2; 
    } 
    return p_val; 
}  

int main() { 
    rect r = {0}; 
    pt *p_val = NULL;  
    printf("请输入两个点的位置信息:"); 
    scanf("%d%d%d%d", &r.pt1.row, &r.pt1.col, &r.pt2.row, &r.pt2.col); 
    p_val = center(r); 
    if (p_val) { 
        printf("长方形的中心点的位置是(%d,%d)\n", 
        p_val->row, p_val->col); 
        free(p_val); 
        p_val = NULL; 
    }
    
    
}

猜你喜欢

转载自www.cnblogs.com/hyq-lst/p/12570923.html