C语言从入门到精通第17天(指针和数组联用)
指针和数组联用
- 不同类型指针变量之间的区别
- 数组的指针
- 指针数组
不同类型指针变量之间的区别
在了解数组和指针联用之前,我们先对指针变量进行补充。我们对比一下int *p1和char *p2
的区别?
相同点:
- 都是指针变量
- 都是用来保存一个内存地址编号
- 占用的内存空间大小一样
int main(){int a = 10;char b = 'e';int *p1 = &a;char *p2 = &b;// 输出指针变量所指向值的内容printf("%d %c\n",*p1,*p2);// 输出指针变量所占空间大小printf("%d %d\n",sizeof(p1),sizeof(p2)); // 8 8// 输出指针变量所指向空间的大小printf("%d %d\n",sizeof(*p1),sizeof(*p2)); // 4 1
}
注意: 这里指针变量再32位机器上占用的内存空间是4个节,再64位机器上占用的空间是8个节。这是因为指针变量保存的是一个内存地址的编号,32位机器内存地址编号最大值为 2 32 − 1 2^{32}-1 232−1,可以用4个字节的变量保存。而在64位机器内存地址编号最大值为 2 64 − 1 2^{64}-1 264−1,可以用8个字节的变量保存。
不同点:
- int *p1的作用就是指针变量p1将他所指向的内存空间中的二进制当作int类型进行处理。
- char *p2的作用就是指针变量p2将他所指向的内存空间中的二进制当作char类型来处理。
p1++和p2++的区别,我们来看以下代码:
int main(){int a = 10;char b = 'e';int *p1 = &a;char *p2 = &b;printf("%p %p\n%p %p",p1,p2,p1++,p2++);return 0;
}
p1自增后输出的地址比开始多了4个字节,p2自增后输出的地址比开始多了1个字节,即当指针变量进行自增的时候,偏移的是一个数据类型,而并非一个字节。
数组的指针
一个变量有一个地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,他们都有相应的地址。所谓的数组的指针是指数组的起始地址。即数组名表示数组的首地址,因此数组名也是一种指针。在前面我们知道了数组可以通过下标进行访问。而当指针进行自增操作时,偏移的是数据类型的个数,所以这里我们还可以通过【数组名+偏移量】进行数组中元素的访问。
语法:
*(数组名+偏移量)
- 这里的偏移量指的访问元素的位置。
- 数组名加偏移量实际上是一个地址,然后通过指针运算符
*
将其地址中的内容进行取出。
代码如下:
int main(){int ch[] = {1,2,23,33,3,3,5};// 使用下标进行访问数组的第三个元素printf("%d\n",ch[2]); //23// 使用偏移量访问数组的第三个元素printf("%d\n",*(ch+2)); //23return 0;
}
指针数组
指针数组就是存放指针的数组,本质是数组,数组中的每个元素都是指针。
语法:
数据类型 *数组
- 数据类型支持所有的数据类型。
- 数组中的所有元素都是指针类型,即地址
数组中保存了几个整型常量的地址(需要注意的是这里保存的是地址而并不是整型常量)。
代码如下:
int main(){int a = 10,b = 12,c = 13;int *ch[3];// 给指针数组进行初始化ch[0] = &a;ch[1] = &b;ch[2] = &c;// 因为ch[0] = &a,则对&a 进行指针运算符则相当于对数组进行操作// 所以想得到a的内容需使用 *ch[0]printf("b is%d\n",*ch[1]);return 0;
}
注意:
int *ch[3]等价于(int *)ch[3]
;因为[]
比*
的优先级要高先与ch
进行匹配。所以这里就可以将他理解为他是一个int *
类型的数组。
相关文章:
C语言从入门到精通第17天(指针和数组联用)
指针和数组联用 不同类型指针变量之间的区别数组的指针指针数组 不同类型指针变量之间的区别 在了解数组和指针联用之前,我们先对指针变量进行补充。我们对比一下int *p1和char *p2的区别? 相同点: 都是指针变量都是用来保存一个内存地址编…...
Android9.0 原生系统SystemUI下拉状态栏和通知栏视图之锁屏通知布局
1.前言 在9.0的系统rom定制化开发中,对于系统原生systemui的锁屏界面的功能也是非常重要的,所以在锁屏页面布局中,也是有通知栏布局的,所以接下来对于息屏亮屏 通知栏布局的相关流程分析,看下亮屏后锁屏页面做了哪些功能 2.原生系统SystemUI下拉状态栏和通知栏视图之锁…...
音视频八股文(10)-- mp4结构
介绍 mp4⽂件格式⼜被称为MPEG-4 Part 14,出⾃MPEG-4标准第14部分 。它是⼀种多媒体格式容器,⼴泛⽤于包装视频和⾳频数据流、海报、字幕和元数据等。(顺便⼀提,⽬前流⾏的视频编码格式AVC/H264 定义在MPEG-4 Part 10)…...
python算法中的深度学习算法之深度信念网络(详解)
目录 学习目标: 学习内容: 深度信念网络 Ⅰ. 预训练 Ⅱ. 微调 学习目标: 一分钟掌握 python算法中的深度学习算法之深度信念网络 入门知识...
SPSS如何绘制常用统计图之案例实训?
文章目录 0.引言1.绘制简单条形图2.绘制分类条形图3.绘制分段条形图4.绘制简单线图5.绘制多重线图6.绘制垂直线图7.绘制简单面积图8.绘制堆积面积图9.绘制饼图10.绘制直方图11.绘制简单散点图12.绘制重叠散点图13.绘制矩阵散点图14.绘制三维散点图15.绘制简单箱图16.绘制分类箱…...
打动人心的故事 | 如何利用文案在Facebook上塑造品牌形象
在当今的数字营销时代,文案已经成为各大平台上不可或缺的元素之一。在Facebook上,一个好的文案能够为品牌带来巨大的曝光率和用户黏性,甚至可以改变用户对品牌的看法。那么,如何利用文案在Facebook上打动人心,塑造品牌…...
什么是模糊控制?
模糊控制设计原理 1、传统控制系统和模糊控制系统 传统控制系统结构: 控制目的:通过控制器调节控制信号u,使输出信号y达到要求 模糊控制系统结构: 与传统控制系统的差异:用模糊控制器FC(Fuzzy Controller&…...
仿抖音开发需要注意的问题
一、版权问题 仿抖音开发需要注意版权问题,包括内容的版权和软件的版权。在开发的过程中,不要直接抄袭他人的作品,应该注重保护知识产权。 二、安全性问题 仿抖音开发需要重视应用的安全性问题,避免应用在使用过程中发生安全漏…...
如何根据期刊缩写查找期刊?
英文论文写作中,经常会插入参考文献。参考文献中的期刊名称,时常需要使用缩写。或者是手头有期刊缩写后的名称,但是有时候,查了半天也查不到期刊期刊全称,费时费力让人崩溃。今天就给各位学者老师总结一些查询期刊缩写…...
数据发送流程
在发送模式下,UART 的串行数据发送电路主要包括一个发送移位寄存器(TSR),TSR 功能是将数据 逐个移位送出。待发数据必须先写到发送缓冲区中。 TXIFx 是发送中断标志位,可配置为发送缓冲区空或TSR 空。 数据的发送支持7bit 、8bit 或9bit 数据…...
堆及其应用
堆是一种基于树结构的数据结构,通常用于实现优先队列。堆分为最大堆和最小堆两种类型,最大堆的每个节点的值都大于等于其子节点的值,最小堆则相反,每个节点的值都小于等于其子节点的值。 基础算法操作包括: 1. 插入元…...
MySQL数据库备份脚本
PS:此脚本简单易懂,根据实际情况修改个别参数测试后即可使用,如有错误请指出! 1.MySQL数据库备份脚本 #!/bin/bashuser pw ip dateYdate "%Y" date2date "%Y%m%d" date3date "%Y%m%d %H:%M" date…...
【2023 · CANN训练营第一季】应用开发深入讲解——第三章应用调试
学习资源 日志参考文档 应用开发FAQ 日志主要用于记录系统的运行过程及异常信息,帮助快速定位系统运行过程中出现的问题以及开发过程中的程序调试问题。 日志分为如下两大类: 系统类日志:系统运行产生的日志。主要包括: Contro…...
黎曼几何与黎曼流形
目录 0.黎曼几何 1. 欧几里得几何与黎曼几何的区别 2.黎曼流形 3.黎曼距离 4.切空间 5.黎曼均值 6. SPD矩阵如何形成黎曼流型 7.切线空间映射 8.同余变换和同余不变 9.黎曼对齐 科普性笔记,做了解,不深入。 0.黎曼几何 黎曼几何是一种基于欧几…...
lua | 运算符与字符串
目录 一、运算符 算数运算符 关系运算符 逻辑运算符 其他运算符 运算符优先级 二、字符串 转义字符 方法与用途 字符串截取 字符串大小转换 字符串查找与反转 字符串格式化 字符与整数的转换 匹配模式 本文章为笔者学习分享 学习网站:Lua 基本语法 | …...
NetBackup 10.2 新功能介绍:PostgreSQL 和 MySQL 自动化恢复达成
NetBackup 10.2 新功能介绍:PostgreSQL 和 MySQL 自动化恢复达成 原文来自:VERITAS 中文社区 2023-04-27 在执行恢复任务时,手动提取、更新数据库和实例并将其附加到 PostgreSQL 和 MySQL 是常规操作。而在最新的 NetBackup 10.2 版本中&am…...
ADRV9002官方例程开发过程中遇到的问题
开发环境:Vivado2021.2 HDL版本:hdl_2021_r2 GitHub - analogdevicesinc/hdl at hdl_2021_r2 no-OS版本:no_OS-2021_R2 GitHub - analogdevicesinc/no-OS at 2021_R2 (PS:也可以用Vivado2019.1开发,…...
Figma转换为sketch,分享这3款工具
在我们的设计工作中,我们经常会遇到各种各样的设计文件相互转换的问题。 你经常为此头疼吗?当你遇到Figma转换Sketch文件的问题时,你是如何解决的?Figma转换Sketch文件有工具吗? 根据众多设计师的经验,本…...
淘宝天猫1688京东商品详情API接口,封装接口可高并发
要提供商品详情数据需要知道具体的商品信息,但通常商品详情数据应包括以下内容: 商品名称:商品的名称,以方便顾客对其进行识别和区分。 商品描述:一段让顾客能够全面认识商品的描述。应能够有效地展示商品的特性、功能…...
虹科荣誉 | 虹科工业物联网产品荣获中国自动化产业年会用户信赖产品奖!
2023 虹科荣获2021年度中国自动化产业年会用户信赖产品奖 近日,2023中国自动化产业年会于北京隆重举行。虹科工业物联网的产品“OPC UA Tunneller软件”凭借其产品优势和市场美誉度,通过层层选拔,在本次大会中荣获2021年度用户信赖产品奖。…...
SwiftUI 如何让文本自动支持查找和替换功能?
概览 有些情况下,我们需要为文本编辑器实现文本的查找和替换功能(find & replace),如果完全靠自已撸码还是比较棘手的。 所幸的是,从 SwiftUI 4.0 (iOS 16)开始,Apple 已经将查…...
SpringCloud全面学习笔记之初尝美妙篇
目录 前言初识微服务单体架构分布式架构微服务架构初见SpringCloud微服务治理分布式服务架构案例 微服务组件及使用Eureka注册中心提供者和消费者Eureka的结构和作用搭建Eureka服务注册服务服务发现Eureka注册服务总结 Ribbon负载均衡原理负载均衡原理负载均衡策略懒加载 Nacos…...
Spring MVC框架
Spring MVC框架 Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spri…...
Illustrator如何使用图层与蒙版之实例演示?
文章目录 0.引言1.绘制可爱冰淇淋图标2.霓虹渐变立体文字海报3.炫彩花纹背景 0.引言 因科研等多场景需要进行绘图处理,笔者对Illustrator进行了学习,本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结,…...
Office Tool Plus的使用
是否为安装,卸载,激活Office而烦恼? 下载 地址:Office Tool Plus 官方网站 - 一键部署 Office 安装office 先安装Office,Office_Pro_Plus_2021_LTSCProjectVisio_x64_zh_CN_VL_2022-02 注意,要安装批量…...
射频PCB 设计的六大条技巧
即使是最自信的设计人员,对于射频电路也往往望而却步,因为它会带来巨大的设计挑战,并且需要专业的设计和分析工具。这里将为您介绍六条技巧,来帮助您简化任何射频PCB 设计任务和减轻工作压力! 1、保持完好、精确的射频…...
优化了成本和安装难度后,UWB信标能否取代蓝牙信标?
1 我们做安U3号是要解决什么问题? (1)信标式设计,解决传统UWB基站安装过程繁琐复杂的问题 传统UWB基站在安装过程中遇上的难题: l 安装位置选取问题:UWB基站的准确度与其安装位置有很大关系,…...
深入理解Java虚拟机——垃圾回收算法
1.前言 垃圾回收需要完成的三件事 首先我们需要明白垃圾回收需要完成的三件事: 哪些内存需要回收 堆内存中的对象所使用的内存方法区中的废弃的常量以及不再使用的类型 什么时候回收 当对象死亡方法区中某些内容(常量和类型)不再被使用 如…...
git-rebase和merge
A-----B----C----D master E----F-----G feature 为了把main分支里新增的代码应用在你的feature分支,你有两种方法:merge 和 rebase。 merge git checkout feature git merge main A-----B----C----D master E----F-----G -----* feature (合并master…...
【JavaWeb 用户认证】Cookie、Session、Token、JWT、Interceptor、SpringBoot、Spring Security
Token基本了解:【详细阐述Token的来源】公钥私钥基本了解:【理解公钥】 文章目录 一、Cookie 经典介绍以及使用案例二、Session 经典介绍以及拦截登录案例三、Token MySQL 的基本介绍及其基本使用四、JWT 基本介绍及其基本讲解五、SpringBoot 使用拦截器…...
网络销售推广平台/seo最新技巧
一个朋友是前阿里人,37岁,离职后就职美团。以前投一个面一个,今年想跳槽,但没想到投十个能有两个面试机会就不错了,最后索性又回了阿里做架构。 他在面试的时候,碰见比自己大的面试官,态度和善&…...
沈阳高端网站/郑州专业的网站公司
概念 自动化构建工具,暂且类比成maven那一类的工具吧(不完全是) 可以不许需要手动再做重复的事情(task) 安装gulp需要Node.js,所以我觉得可以直接学Node.js,对后续的学习还是有比较大的便利。 第三方依赖管理工具bower less可以按照编程的写法…...
做网站反链/搜索引擎优化公司排行
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。抽空把对ListView的使用做了整理,并写了个小例子,如下图。列表的显示需要三个元素:1.ListVeiw 用…...
wordpress 开启多用户/重庆网络seo公司
转载:https://blog.csdn.net/guyuebingchuan/article/details/19620487 1.在同一个网络内,连接电视的命令行: su stop adbd setprop service.adb.tcp.port 5555 start adbd adb connect 10.120.158.21 2.在一根网线时连接电视的命令行: 1.首…...
公司网站背景图片/推广方案应该有哪些方面
当今时代,在全球竞争激烈的大市场中,无论是流程式还是离散式的制造业,无论是单件生产、多品种小批量生产、少品种重复生产还是标准产品大量生产的制造;制造业内部管理都可能遇到以下一些问题:如企业可能拥有卓越的销售…...
网站制作怎么做搜索栏/媒体公关
http://acm.hdu.edu.cn/showproblem.php?pid5917 即世界上任意6个人中,总有3个人相互认识,或互相皆不认识。 所以子集 > 6的一定是合法的。 然后总的子集数目是2^n,减去不合法的,暴力枚举即可。 选了1个肯定不合法,…...