指针,动态内存分配

什么是指针

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

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

第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都存放一个字节的地址,但总体长度是几,是靠前面的类型决定的。

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

(地址编号)

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

指针和二维数组

动态内存分配

传统数组的缺点

为什么需要动态内存分配 

malloc free 

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

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

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

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

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

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

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

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

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

 动态一维数组构造

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

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

 

 

 动态内存静态内存的比较

多级指针

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

 

 

 跨函数使用内存

不能再去读写内容。

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

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

相关文章

阿里云通义千问向全社会开放,近期将开源更大参数规模大模型

9月13日,阿里云宣布通义千问大模型已首批通过备案,并正式向公众开放,广大用户可登录通义千问官网体验,企业用户可以通过阿里云调用通义千问API。 通义千问在技术创新和行业应用上均位居大模型行业前列。IDC最新的AI大模型评估报告…

TypeScript高级类型

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 映射类型(Mapped Types) 1. Readonly 2. Partial 3. Pick 4. Record 条件类型&#xf…

Mysql中group by 使用中发现的问题

当使用 MySQL 的 GROUP BY 语句时,根据指定的列对结果进行分组。在 GROUP BY 分组时,如果某个字段在分组中有多个不同的值,那么就会出现你提到的该字段一直在变化的情况。 这种情况通常是由于在 GROUP BY 中选择的字段与其他非聚合字段不兼容…

互联网医院App开发:构建医疗服务的技术指南

互联网医院App的开发是一个复杂而具有挑战性的任务,但它也是一个充满潜力的领域,可以为患者和医疗专业人员提供更便捷的医疗服务。本文将引导您通过一些常见的技术步骤来构建一个简单的互联网医院App原型,以了解该过程的基本概念。 技术栈选…

打印日志遇到的问题,logback与zookeeper冲突

在做项目时需要打印日志引入了logback打印日志,但是一直无法打印,于是一路查找原因。发现zookeeper中默认带的有个logback和我自己引入的logback版本冲突了,这样直接使用exclusions标签将zookeeper中自带的日志框架全部排除即可 按理说到这一…

Windows下防火墙端口配置

在电脑或者服务器上部署某个应用后,如果需要对外提供服务可能就需要在主机防火墙上设置开启需要的端口,那么具体怎样操作呢 1.打开windows防火墙 2.设置防火墙入站规则 如下图“高级安全Windows Defender 防火墙”页面,点击左侧“入站规则”…

离散数学 学习 之 一阶逻辑基本概念 (一 )

个体词可以 理解为主语 , 3 不是偶数 ,3 就是 个体常项 凡整数都能被 2 整除 , 整数就是 个体变项 上面的谓词是 ( 1 ) 是无理数 ( 2 ) 是有理数 ( 3 ) 与 同岁 &#xf…

机器人任务挖掘与智能超级自动化技术解析

本文为上海财经大学教授、安徽财经大学学术副校长何贤杰出席“会计科技Acctech应对不确定性挑战”高峰论坛时的演讲内容整理。何贤杰详细介绍了机器人任务挖掘与智能超级自动化技术的发展背景、关键技术和应用场景。 从本质来说,会计是非常适合智能化、自动化的。会…

JWT安全

JWT是什么? JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。 JWT全称JSON Web Token,是一种传输信息的标准,用于JSON对象在各方之间安全…

SQL7 查找年龄大于24岁的用户信息

描述 题目:现在运营想要针对24岁以上的用户开展分析,请你取出满足条件的设备ID、性别、年龄、学校。 用户信息表:user_profile iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543female20…

Android性能优化之应用瘦身(APK瘦身)

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览2.1 apk组成 三、优化方向3.1 源代码3.1.1 代码混…

GDB的C++调试方法

本文记录基础的GDB调试过程,包含指令如下: 文章目录 准备编译文件GDB启动GDB开启代码行设置断点运行程序查看pc的指令查看监视的变量以及断点设置快照checkpoint实验1实验2 nextnextistepx/i $pcfinishinfo break 和 delete Numrefbreak col. if condit…

【操作系统】进程控制

进程控制:创建新进程,撤销已有进程,实现进程状态转换等。 原语:进程控制用的程序段。执行期间不允许中断,用"关中断"和"开中断"指令(特权指令)实…

创建java文件 自动添加作者、时间等信息 – IDEA 技巧

2023 09 亲测 文章目录 效果修改位置配置信息 效果 每次创建文件的时候,自动加上作者、时间等信息 修改位置 打开:File —> Settings —> Editor —> File and Code Templates —> includes —> FileHeader 配置信息 /*** author : Java…

zookeeper/HA集群配置

1.zookeep配置 1.1 安装4台虚拟机 (1)按照如下设置准备四台虚拟机,其中三台作为zookeeper,配置每台机器相应的IP,hostname,下载vim,ntpdate配置定时器定时更新时间,psmisc&#xff…

C++与C编译后符号表对比(一百九十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

将钉钉机器人小程序从一个公司迁移至另一个公司的步骤

引言: 由于我们以前开发的钉钉小程序都在一个公司,想在想应用到另一个公司,这就牵扯出了关于钉钉小程序迁移方面的具体步骤。下面是具体步骤: 1、创建一个钉钉小程序 在这一步你需要有钉钉开放平台的开发者权限,具体…

更安全、更清晰、更高效——《C++ Core Guidelines解析》

由资深技术专家Rainer Grimm撰著的《C Core Guidelines解析》,从内容上说,选取了现代C语言最核心的相关规则;从篇幅上说,对软件工程师非常友好。以“八二原则”看,这个精编解析版是一-个非常聪明的选择。同时,Rainer G…

WPF Flyout风格动画消息弹出消息提示框

WPF Flyout风格动画消息弹出消息提示框 效果如图&#xff1a; XAML: <Window x:Class"你的名称控件.FlyoutNotication"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xam…

PyCharm配置及使用Git教程

文章目录 1. 安装PyCharm2. 安装Git3. 在PyCharm中配置Git插件4. 连接远程仓库5. Clone项目代码6. 将本地文件提交到远程仓库6.1 git add6.2 git commit6.3 git push6.4 git pull 7. 代码回滚8. 分支操作8.1 新建分支8.2 切换分支8.3 合并分支8.4 删除分支 9. 解决本地和远程冲…