8.8 【C语言】动态内存分配与指向它的指针变量

8.8.1 什么是内存的动态分配

栈:全局变量和局部变量,全局变量是分配在内存中的静态存储区的,非静态的局部变量是分配在内存中的动态存储区的。

堆:数据临时存放在一个特别的自由存储区。

8.8.2 怎样建立内存的动态分配

对内存的动态分配是通过系统提供的库函数来实现的,主要有malloc,calloc,free,realloc这四个函数。

1.用malloc函数开辟动态存储区

其函数原型为:

void * malloc(unsigned int size);

作用是在内存的动态存储区中分配一个长度为size的连续空间。

2.用calloc函数开辟动态存储区

函数原型为:

void * calloc(unsigned n,unsigned size);

在内存的动态存储区中分配n个长度为size的连续空间,这个空间一般比较大,足以保存一个数组。

3.用realloc函数重新分配动态分配区

其函数原型为:

void * realloc(void *p,unsigned int size);

如果已经通过malloc函数或calloc函数获得了动态空间,想改变其大小,可以用recalloc函数重新分配。

4.用free函数释放动态存储区

其函数原型为

void free(void * p);

作用是释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用。

8.8.3 void指针类型

不要把“指向void类型”理解为能指向“任何的类型”的数据,而应理解为“指向空类型”或“不指向确定的类型”的数据。

例8.30:建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不及格成绩。

#include<stdio.h>
#include<stdib.h>           //程序中用了malloc函数,应包含stdib.h
int main(){void check(int *);      //函数声明int *pi,i;p1=(int * )malloc(5 *sizeof(int));  //开辟动态存储区,将地址转换成int*型,然后放在p1中for(i=0;i<5;i++)scanf("%d",p1+1);       //输入五个学生成绩check(p1);             //调用check函数return 0;
}
void check(int *p){       //定义check函数,形参是int*指针int i;printf("they are fail:");for(i=0;i<5;i++)if(p[i]<60)printf("%d",p[i]);   //输出不合格成绩printf("\n");
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/51276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python标准库概览

Python标准库概览 知识点 标准库: turtle库(必选)标准库: random库(必选)、time库(可选&#xff09; 知识导图 1、turtle库概述 turtle&#xff08;海龟&#xff09;是Python重要的标准库之一&#xff0c;它能够进行基本的图形绘制。turtle库绘制图形有一个基本框架&#x…

RabbitMQ特性介绍和使用案例

❤ 作者主页&#xff1a;李奕赫揍小邰的博客 ❀ 个人介绍&#xff1a;大家好&#xff0c;我是李奕赫&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 记得点赞、收藏、评论⭐️⭐️⭐️ &#x1f4e3; 认真学习!!!&#x1f389;&#x1f389; 文章目录 RabbitMQ特性…

Web 开发 Django 管理工具

上次为大家介绍了 Django 的模型&#xff0c;通过模型就可以操作数据库&#xff0c;从而就可以改变页面的展示内容&#xff0c;那问题来了&#xff0c;我们只能通过手动编辑模型文件来配置模型吗&#xff1f;当然不是&#xff0c;Django 为我们提供了强大的工具&#xff0c;可以…

【架构】探索计算机处理器的世界:ARM和x86架构解析及指令集

目录 导语ARM架构x86架构AMD公司对比与应用不同架构处理器的指令集结语 导语 计算机处理器是数字化时代的核心引擎&#xff0c;而在众多处理器架构中&#xff0c;ARM和x86是备受关注的三个。本文将带您深入探索这三个架构&#xff0c;介绍它们的特点、公司背景以及应用领域。让…

ARM Linux 系统稳定性分析入门及渐进 13 -- gdb 反汇编 disassemble 命令详细介绍及举例】

文章目录 1.1 gdb 调试回顾1.1.1 gdb list 命令介绍 1.2 反汇编命令 dis 介绍1.2.1 如何设置 gdb 汇编代码的格式 1.1 gdb 调试回顾 在GNU调试器&#xff08;GDB&#xff09;中&#xff0c;有许多命令可以帮助我们调试应用程序。 gdb: 这是一个强大的Unix下的程序调试工具。以…

融资融券利率是多少?最低是哪一家?

按目前市场上统计的数据看&#xff0c;融资融券的默认利率是8.35%&#xff0c;普遍利率在6左右&#xff0c;融资融券简单的来说就是信用账户&#xff0c;包括融资和融券两部分。 融资就是向券商借钱炒股交易&#xff0c;现金融资比例是1&#xff1a;1。股票有折算率&#xff0c…

Java中常见的异常类

在Java中&#xff0c;异常&#xff08;Exception&#xff09;是指在程序执行过程中可能出现的错误或异常情况。Java通过异常类来表示这些异常情况&#xff0c;异常类是从java.lang.Exception类继承的。异常类可以分为两大类&#xff1a;Checked异常和Unchecked异常。 Checked异…

【JavaEE】Spring全家桶实现AOP-统一处理

【JavaEE】AOP&#xff08;2&#xff09; 文章目录 【JavaEE】AOP&#xff08;2&#xff09;1. 统一登录校验处理1.1 自定义拦截器1.2 将自定义拦截器加入到系统配置1.3 测试1.4 对于静态资源的处理1.5 小练习&#xff1a;统一登录拦截处理1.6 拦截器原理1.6.1 执行流程1.6.2 源…

matlab 最小二乘拟合二维直线(直接求解法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 平面直线的表达式为: y = k x + b

C++学习第十八天----switch语句

1. &#xff1f;:运算符 条件运算符&#xff0c;又叫三元运算符&#xff1b; 该运算符的通用格式为&#xff1a; expression1&#xff1f;expression2 &#xff1a;expression3&#xff1b; 意义是假如1为true&#xff0c;则整个条件表达式的值为2的值&#xff0c;否则为3的值&…

《游戏编程模式》学习笔记(八)双缓冲模式 Sequencing Patterns

双缓冲模式的意图 双缓冲模式&#xff0c;使用序列操作来模拟瞬间或者同时发生的事情 具体定义 双缓冲模式定义缓冲类封装了缓冲&#xff1a;一段可改变的状态。 这个缓冲被增量地修改&#xff0c;但我们想要外部的代码将修改视为单一的原子操作。 为了实现这点&#xff0c;…

Programming abstractions in C阅读笔记:p127-p129

《Programming Abstractions In C》学习第51天&#xff0c;p127-p129&#xff0c;总结如下&#xff1a; 一、技术总结 1. string library 掌握常用函数如strlen&#xff0c;strcpy用法。 2.buffer overflow(缓冲区溢出) (1)什么是buffer? p129&#xff0c;Arrays that a…

死锁的典型情况、产生的必要条件和解决方案

前言 死锁&#xff1a;多个线程同时被阻塞&#xff0c;他们中的一个或全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 目录 前言 一、死锁的三种典型情况 &#xff08;一&#xff09;一个线程一把锁 &#xff08;二&#xff09;…

==和===的区别(经典面试题,你不知道的细节)

全等运算符 又叫全等运算符&#xff0c;结果会返回一个布尔值&#xff0c;在数据类型相同的情况下&#xff0c;会比较值&#xff0c;值相同才返回true "1" 1 // false NaN NaN // false undefined undefined // true相等运算符 相等运算符在比较两个变量是否相…

分布式锁解决方案

分布式锁解决方案 背景解决方案redisson 分布式锁 实战zookeeper 分布式锁 实战结论代码地址背景 由于分布式或者集群部署项目时,在某些业务场景下需保证资源的原子性、一致性和互斥性。 如果把房子比作资源,通俗的来讲,我无论在那个城市生活,这个房子我先租的,再没有退房…

dolphinscheduler的僵尸任务清理和清理一直在运行的任务状态

dolphinscheduler的僵尸任务清理 界面操作不了的 只能去数据库更改状态或则删除掉 原因&#xff1a;海豚调度中有几百条僵尸任务&#xff0c; 界面怎么也删不掉&#xff0c;想从数据库中删除&#xff0c;开始查找从数据库删除的办法。 参考以下脚本&#xff0c;结合我库中僵尸…

缓存的设计方式

问题情况&#xff1a; 当有大量的请求到内部系统时&#xff0c;若每一个请求都需要我们操作数据库&#xff0c;例如查询操作&#xff0c;那么对于那种数据基本不怎么变动的数据来说&#xff0c;每一次都去数据库里面查询&#xff0c;是很消耗我们的性能 尤其是对于在海量数据…

抖音火山引擎推出免费域名DNS和公共DNS服务

抖音旗下的云计算服务火山引擎最近推出了"TrafficRoute DNS 套件"服务&#xff0c;其中包括两款产品&#xff0c;对软希网来说非常有用。 1.域名DNS&#xff1a; 这是一个用于网站域名的DNS服务&#xff0c;可以加速域名解析速度&#xff0c;从而提升网站的速度。如…

回归预测 | MATLAB实现GA-RF遗传算法优化随机森林算法多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GA-RF遗传算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现GA-RF遗传算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍程…

mysql的登录与退出

mysql是c/s架构&#xff0c;意味着同时要有客户端和服务端 1 找到客户端。mysql.exe的安装目录 打开命令行 2 输入对应的服务器的ip&#xff0c;如果是本地&#xff0c;就是Localhost&#xff0c;如果是远程服务器&#xff0c;那就输入对应ip/域名。并且指定mysql监听的端口 …