指针,动态内存分配

news2024/11/26 10:00:31

目录

什么是指针

指针重要性

 指针的定义

​指针的分类,指针和

基本类型指针 

星号的含义

形参实参 

​指针和数组

指针和一维数组

指针变量的运算 

一个指针变量到底站占几个字节

指针和二维数组

动态内存分配

传统数组的缺点

为什么需要动态内存分配 

malloc free 

 动态一维数组构造

 动态内存静态内存的比较

多级指针

 跨函数使用内存


什么是指针

指针就是地址,地址就是内存单元的编号

指针变量,存放其他变量地址的变量 ,存放地址的变量

第2句话,修改i的值也不影响p的值,可以看下面的例子,p放的是地址,p的地址修改了,不影响i,不是修改*p

指针重要性

 指针的定义

 指针的分类,指针和

基本类型指针 

 

 

星号的含义

形参实参 

执行swap_1时,第一步先为它里面的局部变量分配存储空间,第二步把实参的值发送给形参,这意味着i和a是不同的变量,当swap_1执行完毕后,swap_1中所有变量的空间全部被释放了

指针和数组

指针和一维数组

指针变量的运算 

一个指针变量到底站占几个字节

 ​​​

p,q,r都存放第一个字节的地址。

那为什么存放第一个字节的地址,我们说r存放x的地址,r就指向x,但r又保存了第一个字节的地址,那严格来说r只能指向第一个字节,那为什么*r是x呢?这是一个矛盾的地方。比如一个变量占四个字节,我们不能说把这四个字节的地址都保存起来,我们只保存第一个字节的编号。

我怎么知道r是指向的从这开始的8个字节,这是靠变量类型,p,q,r都存放一个字节的地址,但总体长度是几,是靠前面的类型决定的。所以r就指向了x,*r就是x

p,q,r都存放一个字节的地址,但p,q,r却占四个字节呢?这说明地址或者说编号占四个字节,为什么四个?

(地址编号)

一共32个零,每个单元四个字节(32位),无论是第几个地址编号都要用四个字节保存

指针和二维数组

动态内存分配

传统数组的缺点

为什么需要动态内存分配 

malloc free 

 分配了四个字节,只返回第一个字节的地址,第一个字节的地址到底是什么类型的地址?那指向他的变量占几个字节?

第一个字节的地址本身不能确定指向它的变量占几个字节,所以前面需要强制类型转换

表示把第一个字节的地址强制转换为整型的地址,也就说malloc函数虽然只返回了第一个字节的地址,但第一个字节的地址代表的是一个整型变量的地址,整型变量的地址肯定四个四个划分的。

p只保存了四个字节中第一个字节的地址,因为有强制类型转换,虽然只有一个地址,但它知道是整型的地址,所以四个四个划分,刚好指向这四个字节。

把首字节转换成int*,pArr就指向了第一个元素,指向四个字节

4表示分配四个字节,但malloc函数只返回了第一个字节的地址,所以需要强制类型转换来告诉别人你这个指向第一个字节的地址的变量到底占几个字节。

malloc分配了四个,p是一个变量,p也有空间,没空间怎么把第一个字节的地址放进去

第一个字节的地址需要几个字节去保存?四个,因为地址,就是内存单元的编号,内存单元的编号由32根地址总线来排列组合的,所以需要四个字节。

指针变量,无论它指向的变量占几个字节,它都占四个字节。

所谓分配就是把这四个字节的使用权限给你,所谓释放就是这四个字节的内存不能使用了,不能写也不能读。

 动态一维数组构造

如果一个指针指向四个字节,加一指向后四个字节

如果一个指针指向100个字节,加一指向后100个字节

 

 

 动态内存静态内存的比较

多级指针

p是指针变量,是变量一定有地址

 

 

 跨函数使用内存

不能再去读写内容。

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

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

相关文章

Taro小程序隐私协议开发指南填坑

一. 配置文件app.config.js export default {...__usePrivacyCheck__: true,... }二. 开发者工具基础库修改 原因:从基础库 2.32.3 开始支持 修改路径:详情->本地设置->调试基础库 三. 用户隐私保护指引更新 修改路径:mp后台->设…

Oracle数据如何迁移导入到MySQL

使用Navicat工具建立数据连接,进行数据传输 1、打开Navicat工具,分别连接Oracle数据库和MySQL数据库。 2、连接源选择你的oracle数据,目标选mysql 即可成功导入

Python中的异常处理4-2

在《Python中的异常处理4-1》中提到,用except可以捕获所有的异常。实际上,在程序运行的过程中,出现异常的原因有很多,比如下标超出范围、除数为0、变量未定义等。 1 except语句加上具体的异常类型 可以在except语句之后加上具体…

cms之wordpress主题安装

WordPress主题安装教程的方法有两种,分为在线安装和上传安装,下面是主题详细安装方法的步骤。 后台在线安装主题 从后台的主题界面在线安装主题是最方便的WordPress主题安装方式。方法如下: 1 在WordPress后台,转到外观→主题 …

yarn的资源优化的调整参数

yarn的资源优化的调整参数 官网: https://hadoop.apache.org/docs/r3.3.6/hadoop-yarn/hadoop-yarn-common/yarn-default.xml 没事多看官网哈 yarn.nodemanager.resource.memory-mb:用于设置NodeManager节点的总内存容量,单位为MB。根据集…

php预约系统源码 网上预约小程序开发源码 整套系统搭建让在线预约更便捷

随着互联网技术的发展,越来越多的服务行业开始通过网上预约系统来实现便捷的客户管理和服务提供。PHP预约系统源码作为一种成熟的技术方案,可以帮助商家快速搭建自己的预约系统,提高工作效率,优化客户体验。 分享一个php预约系统…

C#教学辅助系统网站as.net+sqlserver

本教学辅助系统系统从两种用户角度进行功能划分。 1、学生部分: 1.1:新闻查看; 1.2:课程公告查看; 1.3:用户注册; 1.4:在线留言; 1.5:资料下载; …

goaccess 日志分析 nginx

分析命令: goaccess -a -d -f /mnt/winshare/access-2023070112.log -p goaccess.conf -o /mydata/nginx/html/2023070112_new.html分析日志时的参数 goaccess使用参数详解-a 开启 UserAgent 列表。开启后会降低解析速度 -c 在程序开始运行时显示 日志/日期 配…

KDD 2023 | WHEN异构时间序列分析模型:当Wavelet和DTW遇上Attention

论文题目: WHEN: A Wavelet-DTW Hybrid Attention Network for Heterogeneous Time Series Analysis 论文链接: https://dl.acm.org/doi/10.1145/3580305.3599549 论文作者: 王静远,杨晨,蒋笑寒,吴俊杰教授…

JavaScript数组的应用及实战

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 引言 1. 数组简介 2. 数组方法API 添加和删除元素 修改和访问元素 数组遍历 数组转换和连接 数组排序和搜索…

IMU+摄像头实现无标记运动捕捉

惯性传感和计算机视觉的进步为在临床和自然环境中获得精准数据带来了新可能。然而在临床应用时需要仔细地将传感器与身体对齐,这减慢了数据收集过程。 随着无标记运动捕捉的发展,研究者们提出了一个新的深度学习模型,利用来自视觉、惯性传感…

BIO、NIO、AIO有什么区别

什么是IO Java中I/O是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。 在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很…

Spring框架@Autowired和@Resource到底有什么区别

目录 1 来源不同2.依赖查找顺序不同2.1 Autowired 查找顺序2.2 Resource 查找顺序2.3 查找顺序小结 3.支持的参数不同4.依赖注入的支持不同5.编译器提示不同6 总结 1 来源不同 Autowired 和 Resource 来自不同的“父类”,其中 Autowired 是 Spring 定义的注解&#…

从命令行管理文件

1.linux系统中硬盘文件存储原理 硬连接 1.1.原理 linux系统中允许多个文件指向同一个inode,即允许一个文件拥有多个有效的路径名和文件名。 理解:硬连接就是指向原始文件的inode指针 证明一: 创建一个文件t1 查看他的硬链接数 创建一个硬链接 …

一阶微分方程

目录 可分离变量的方程 齐次微分方程 一阶线性微分方程 伯努科方程 全微分方程 可分离变量的方程 可分离变量的方程是一种常见的一阶常微分方程类型,其特点是可以通过将变量分离到方程的两侧,从而可以分别对各自变量进行积分。一般形式的可分离变量…

武汉融资融券(两融)开户利率最低能做到多少?无门槛利率5%!

武汉融资融券(两融)开户利率最低能做到多少?无门槛利率5%! 具体武汉融资融券(两融)开户利率最低能做到多少,需要根据不同的券商政策而定。不同的券商可能具有不同的优惠政策和开户条件,因此开户前应该仔细了解券商的政策和条件。 融资融券是指投资者通…

Minio入门系列【2】纠删码

1 纠删码 Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。 即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据 1.1 什么叫纠删码 纠删码是一种用于重建丢失或损坏数据的数学算法。 纠删码(e…

SQL注入类型判断

SQL注入的类型分为字符型和数字型,以sqli-labs靶场1、2关为例: 文章目录 第一关第二关无错误回显的判断 第一关 第一关注入一个1’,错误回显出下面内容,其中1’是注入的内容,0,1后面的单引号和最前面的单引号是一对&am…

湖北中级工程师职称网上申报流程是怎么样?应该如何在网上填写申报信息呢?

现在湖北中级职称全部采取网上申报形式,不管是水测还是后面职称评审都是需要网上申报信息,那么中级职称评审,网上如何申报信息呢?填写信息的时候需要注意哪些方面呢?今天甘建二这边给大家整理一下,希望对大…

电动垂直起降飞行器的发展现状

摘要 近年来,电动垂直起降(eVTOL)飞行器在城市空运中得到快速发展。本文介绍了近5年来世界范围内主要的在研电动垂直起降飞行器项目,从飞行器布局形式、总体设计参数、推进系统类型、飞行控制等级等方面进行了归纳和总结,分析了不同构型下相应电动垂直起…