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; } }
每天更新pyQt5内容