当前位置: 首页 > news >正文

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 2321,可以用4个字节的变量保存。而在64位机器内存地址编号最大值为 2 64 − 1 2^{64}-1 2641,可以用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&#xff09…...

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开发&#xff0c…...

Figma转换为sketch,分享这3款工具

在我们的设计工作中,我们经常会遇到各种各样的设计文件相互转换的问题。 你经常为此头疼吗?当你遇到Figma转换Sketch文件的问题时,你是如何解决的?Figma转换Sketch文件有工具吗? 根据众多设计师的经验,本…...

淘宝天猫1688京东商品详情API接口,封装接口可高并发

要提供商品详情数据需要知道具体的商品信息,但通常商品详情数据应包括以下内容: 商品名称:商品的名称,以方便顾客对其进行识别和区分。 商品描述:一段让顾客能够全面认识商品的描述。应能够有效地展示商品的特性、功能…...

虹科荣誉 | 虹科工业物联网产品荣获中国自动化产业年会用户信赖产品奖!

2023 虹科荣获2021年度中国自动化产业年会用户信赖产品奖 近日,2023中国自动化产业年会于北京隆重举行。虹科工业物联网的产品“OPC UA Tunneller软件”凭借其产品优势和市场美誉度,通过层层选拔,在本次大会中荣获2021年度用户信赖产品奖。…...

从芯片手册到PCB:SPL06与MPU9250的I2C实战布线要点与防护设计

从芯片手册到PCB:SPL06与MPU9250的I2C实战布线要点与防护设计 在无人机飞控板的设计中,气压传感器SPL06和九轴传感器MPU9250的稳定工作直接关系到飞行姿态控制的精确性。本文将深入探讨这两个关键传感器在PCB布局中的I2C总线设计要点,以及如何…...

Folcolor:14种色彩让Windows文件夹管理效率提升300%

Folcolor:14种色彩让Windows文件夹管理效率提升300% 【免费下载链接】Folcolor Windows explorer folder coloring utility 项目地址: https://gitcode.com/gh_mirrors/fo/Folcolor 你是否厌倦了在无数个黄色文件夹中寻找目标文件?Folcolor为你带…...

M9A:重返未来1999终极解放双手指南 - 智能助手让你的游戏体验更轻松

M9A:重返未来1999终极解放双手指南 - 智能助手让你的游戏体验更轻松 【免费下载链接】M9A 重返未来:1999 小助手 | Assistant For Reverse: 1999 项目地址: https://gitcode.com/gh_mirrors/m9/M9A 你是否曾经为《重返未来:1999》的日…...

谷歌报告:AI 加速云攻击,企业需自动化防御应对第三方漏洞与身份入侵

AI 加速攻击,云端企业成重灾区 2026 年 3 月,谷歌安全调查人员和工程师团队发布《云威胁展望报告》,基于 2025 年下半年的观察得出结论:AI 正助力攻击者以前所未有的速度利用漏洞,如今大多数云攻击目标是薄弱的第三方软…...

打通飞书与GitLab:基于Webhook的事件通知与精准@实践指南

1. 为什么需要打通飞书与GitLab的通知系统 在软件开发团队中,代码仓库的每一次变更都可能影响整个项目进度。传统的做法是开发人员手动在群里相关同事,或者依赖邮件通知,这种方式效率低下且容易遗漏重要信息。我曾经参与过一个跨时区协作项目…...

别再只抄datasheet了!TPS5430降压电路PCB布局的5个实战避坑点(附15V转12V/负压案例)

TPS5430降压电路PCB布局的5个实战避坑指南:从理论到15V转12V/负压案例 在硬件设计领域,TPS5430作为一款经典的Buck型DC-DC转换芯片,其性能表现与PCB布局质量密切相关。许多工程师虽然能正确绘制原理图,却在PCB实现阶段因忽视关键…...

cann/hcomm:HcommWriteOnThread线程写入函数

HcommWriteOnThread 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT:支…...

3分钟上手Windhawk:像安装App一样轻松定制Windows系统

3分钟上手Windhawk:像安装App一样轻松定制Windows系统 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk 你是否厌倦了Windows系统一成不变的界…...

Symfony String测试指南:如何编写高质量的字符串操作测试用例

Symfony String测试指南:如何编写高质量的字符串操作测试用例 【免费下载链接】string Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way 项目地址: https://gitcode.com/gh_mirrors…...

如何用Perplexity秒级获取NCBI/UniProt/PDB关联知识?——生物学家正在悄悄使用的4层语义穿透法

更多请点击: https://intelliparadigm.com 第一章:如何用Perplexity秒级获取NCBI/UniProt/PDB关联知识?——生物学家正在悄悄使用的4层语义穿透法 Perplexity 不是传统搜索引擎,而是面向科研语义网络的推理型知识代理。当输入一个…...