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内容
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?