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

C语言学习记录(十一)——指针基本知识及运算

文章目录

  • 前言
  • 1. 指针的概念
  • 2.指针变量的说明
  • 3. 指针的含义
  • 4. 指针运算
    • ①指针加减:
    • ②指针的关系运算符


前言

一个学习嵌入式的小白~ 有问题评论区或私信指出~

提示:以下是本篇文章正文内容,下面案例可供参考

1. 指针的概念

在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,有时对地址,指
针和指针变量不区分,统称指针。(地址==指针)

在这里插入图片描述

2.指针变量的说明

一般形式:

<存储类型>  <数据类型>   *<指针变量名>
例如:int *pName;int  a = 0;pName = &a;printf("%d",*p);

指针的存储类型是指针变量本身存储类型
指针说明时指定的数据类型不是指针变量本身的数据类型,而是指针目标的数据类型,简
称为指针的数据类型。

指针在说明的同时,也可以被赋予初值,叫做指针的初始化。

<存储类型> <数据类型> *<指针变量名> = <地址量>;
例如:int a ,*pa = &a;int a=1;printf("%d",*pa);

3. 指针的含义

指针指向的内存区域中的数据称为指针的目标
如果它指向的区域是程序的一个变量的内存空间,则这个变量称为指针的目标变量,简称
为指针的目标。
引入指针要注意程序中的px 、*px 和 &px 三种表示方法的不同意义,设px为一个指针,
则:

  • px ,指针变量,它的内容是地址量
  • *px,指针所指向的对象,它的内容是数据
  • &px,指针变量占用的存储区域的地址,是一个常量

指针的赋值运算指的是通过赋值运算符指针变量送一个地址值。
向一个指针变量赋值时,送的值必须是地址常量或指针变量,不能是普通的整数(除
了赋零以外)。

指针赋值运算常见的有以下几种形式:

  1. 把一个普通变量的地址赋给一个具有相同数据类型的指针
	  double x = 15 ,*px ;px =  &x ;  

2.把一个已有地址值的指针变量赋给具有相同数据类型的另一个指针变量

	int a = 5,*px,*py;px = &a;py = px;

3.把一个数组的地址赋给具有相同数据类型的指针

		int arr[10],*pa;pa = arr; //  等价于pa = &arr[0]

什么是指针?
指针是一种专门存放地址的变量,它的值代表一个内存单元,对其操作可以简介对其内变量操作故名指针
指针有多少个字节?
不同电脑的不一样32位系统4个字节,64位的电脑8个字节

4. 指针运算

  • 指针运算是以指针变量所存放的地址量作为运算量而进行的运算
  • 指针运算的实质就是地址的计算
  • 指针运算的种类是有限的,它只能进行赋值运算、算数运算和关系运算。‘

在这里插入图片描述

①指针加减:

在这里插入图片描述

px+n表示的实际位置的地址量是:

  • (px)+sizeof(px的类型) * n

px-n表示的实际位置的地址是:

  • (px)-sizeof(px的类型) * n

注意:

  • 不同数据类型的两个指针实行加减法整数运算是没有意义的
  • 两个指针相减运算
    • px-py运算的结果是两个指针指向的地址位置之间相隔数据的个数。
    • 因此两个指针相减不是两个指针持有的地址值相减的结果。
    • 两个指针相减的结果值不是地址量,而是一个整数值,表示两指针之间相隔数据的个
      数。

px++, ++px, px–, --px运算

在这里插入图片描述

②指针的关系运算符

  • 两个指针之间的关系运算符表示它们指向的地址位置之间的关系,指向地址大的指针
    大于指向地址小的指针
  • 指针与一般整数变量之间的关系运算没有意义。但可以和零进行等于 或不等于的关系
    运算,判断指针是否为空。

在这里插入图片描述

相关文章:

C语言学习记录(十一)——指针基本知识及运算

文章目录 前言1. 指针的概念2.指针变量的说明3. 指针的含义4. 指针运算①指针加减&#xff1a;②指针的关系运算符 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 1. 指针的概念 在C语言中&…...

Oracle中 ROW_NUMBER()的语法及在对应不同需求下应如何使用

Oracle数据库中的ROW_NUMBER()函数是一个窗口函数&#xff0c;它为查询结果集中的每一行分配一个唯一的序号。这个函数在数据分析、分页查询、数据去重和排名问题等方面非常有用。ROW_NUMBER()函数的语法如下&#xff1a; ROW_NUMBER() OVER ( [ PARTITION BY column ] ORDER …...

德邦快递大件可以寄2米长物品吗?大件跨省行李用哪个快递便宜?

搬家或寄送特殊尺寸物品时&#xff0c;快递的选择尤为关键。特别是2米长的大件物品&#xff0c;是否能够承运&#xff1f;哪家快递在跨省大件行李方面更经济&#xff1f;今天&#xff0c;就为你解答这些疑问。 1、祺祺寄快递小程序&#xff1a; “祺祺寄快递”小程序&#xff…...

C# 在WPF .net8.0框架中使用FontAwesome 6和IconFont图标字体

文章目录 一、在WPF中使用FontAwesome 6图标字体1.1 下载FontAwesome1.2 在WPF中配置引用1.2.1 引用FontAwesome字体文件1.2.2 将字体文件已资源的形式生成 1.3 在项目中应用1.3.1 使用方式一&#xff1a;局部引用1.3.2 使用方式二&#xff1a;单个文件中全局引用1.3.3 使用方式…...

万能自定义预约小程序源码系统 适合任何行业在线预约报名 前后端分离 带完整的安装代码包以及搭建教程

系统概述 在当今数字化时代&#xff0c;线上预约已成为各行各业不可或缺的一部分。为满足广大企业和个人对在线预约系统的需求&#xff0c;我们特别推出了这款“万能自定义预约小程序源码系统”。该系统以其高度的灵活性和可扩展性&#xff0c;为各行各业提供了完美的在线预约…...

【MySQL备份】mysqldump篇

目录 1.简介 2.基本用途 3.命令格式 3.1常用选项 3.2常用命令 4.备份脚本 5.定时执行备份脚本 1.简介 mysqldump 是 MySQL 数据库管理系统的命令行实用程序&#xff0c;用于创建数据库的逻辑备份。它能够导出数据库的结构&#xff08;如表结构、视图、触发器等&#xf…...

控制台扫雷(C语言实现)

目录 博文目的实现思路项目创建文件解释 具体实现判断玩家进行游戏还是退出扫雷棋盘的确定地图初始化埋雷玩家扫雷的实现雷判断函数 源码game.cgame.h扫雷.c 博文目的 相信不少人都学习了c语言的函数&#xff0c;循环&#xff0c;分支那我们就可以写一个控制台的扫雷小游戏来检…...

操作系统期末复习 | 批处理程序 | PV实现同步互斥 | 调度算法 | 页面置换算法 | 磁盘调度算法

操作系统引论 批处理程序 单道批处理&#xff1a;引入脱机输入/输出技术&#xff0c;并由监督程序负责控制作业的输入、输出。主要优点是缓解了一定程度的人机速度矛盾&#xff0c;资源利用率有所提升。主要缺点是内存中仅能有一道程序运行&#xff0c;只有该程序运行结束之后…...

字符串的六种遍历方式

在 Java 中&#xff0c;有多种遍历字符串的方法。以下是几种常见的遍历字符串的方法&#xff0c;并附有示例代码 1. 使用 for 循环 这是最常见和基础的遍历方法&#xff0c;通过索引访问每个字符。 public class StringTraversal {public static void main(String[] args) {S…...

在码云(Gitee)上建立分支(Branch)的步骤如下:

步骤一&#xff1a;登录码云 首先&#xff0c;打开码云的官方网站&#xff08;gitee.com&#xff09;&#xff0c;输入用户名和密码登录你的账号。 步骤二&#xff1a;创建仓库 登录后&#xff0c;在页面右上方的搜索框中输入仓库名称&#xff0c;并点击“创建”按钮创建新的仓…...

JVM专题四:JVM的类加载机制

Java中类的加载阶段 类加载 Java中的类加载机制是Java运行时环境的一部分&#xff0c;确保Java类可以被JVM&#xff08;Java虚拟机&#xff09;正确地加载和执行。类加载机制主要分为以下几个阶段&#xff1a; 加载&#xff08;Loading&#xff09;&#xff1a;这个阶段&#x…...

Python爬取中国天气网天气数据.

一、主题式网络爬虫设计方案 1.主题式网络爬虫名称 名称&#xff1a;Python爬取中国天气网天气数据 2.主题式网络爬虫爬取的内容与数据特征分析 本次爬虫主要爬取中国天气网天气数据 3.主题式网络爬虫设计方案概述&#xff08;包括实现思路与技术难点&#xff09; reques…...

EXCEL快速填充空白内容

** EXCEL快速填充空白内容 ** 1.全选所有需要填充的内容&#xff0c;按住电脑的F5或者CTRLG点击定位 2.可以看到空白处被自动选定&#xff0c;之后按电脑和⬆&#xff0c;最后CTRLenter 可以看到空白处已经被填充。...

CBSD创建和管理bhyve容器Ubuntu@FreeBSD

bhyve介绍&#xff1a;bhyve&#xff1a;FreeBSD下的原生虚拟机管理器_freebsd 虚拟化平台bhyve-CSDN博客 两个bhyve的管理软件&#xff1a;使用bvm管理bhyve虚拟机管理系统FreeBSD-CSDN博客 vm-bhyve&#xff1a;bhyve虚拟机的管理系统FreeBSD-CSDN博客 现在&#xff0c;我…...

STM32开发实战:SPI接口在W25Q64 Flash存储器中的应用

摘要 本文将深入探讨STM32微控制器如何利用SPI接口与W25Q64 Flash存储器进行通信。W25Q64是一款常用的SPI串行Flash存储器&#xff0c;具有8Mbit的存储容量。本教程将指导读者完成硬件连接、SPI配置、读写操作&#xff0c;并提供实际的代码实现。 1. SPI接口概述 SPI是一种串…...

python一些进阶用法:hook 钩子函数以及Registry机制

写在前面 一句话讲&#xff0c;register机制 和 hook 都是函数/类 调用和传参机制的一种灵活运用&#xff0c;将函数作为传参对象&#xff0c;进行回调和封装&#xff0c;通常扩展了或修改了原始函数的行为&#xff1b;这些高级用法都是编程经验中沉淀下来的常用范式&#xff0…...

工作实践:11种API性能优化方法

一、索引优化 接口性能优化时&#xff0c;大家第一个想到的通常是&#xff1a;优化索引。 确实&#xff0c;优化索引的成本是最小的。 你可以通过查看线上日志或监控报告&#xff0c;发现某个接口使用的某条SQL语句耗时较长。 此时&#xff0c;你可能会有以下疑问&#xff…...

正版软件 | WIFbox:智能化文件管理工具,让效率与隐私并行

在数字化办公日益普及的今天&#xff0c;文件管理成为了提升工作效率的关键。WIFbox 一款智能文件管理工具&#xff0c;利用强大的人工智能技术&#xff0c;帮助您快速对文件进行分类&#xff0c;完成复杂的智能文件分类任务。 智能分类&#xff0c;效率倍增 WIFbox 通过精细化…...

Postman接口工具实战

为了更好地展示Postman接口测试的实战过程&#xff0c;我将以一个简单的实战示例来说明如何使用Postman完成一个API的测试。假设我们要测试一个假想的天气查询API&#xff0c;该API允许用户通过城市名查询天气情况。我们将执行以下步骤&#xff1a; 1. 准备工作 确保已经安装…...

江协科技51单片机学习- p17 定时器

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…...

【D3.js in Action 3 精译】前言

早在 2017 年&#xff0c;我还是一名渴望迈出职业生涯关键一步的前端开发者。虽然我很热衷于网站开发&#xff0c;但总感觉缺了点什么。我一直希望自己的工程专业背景和对教学的热爱能与新的编程技能相结合。就在这时&#xff0c;搭档建议我学学数据可视化。出于某种原因&#…...

Java SE入门及基础(58) 并发 进程与线程概念

目录 并发 进程和线程 1. 进程和线程 2. 进程 3.线程 总结 并发 并发(Concurrency) Computer users take it for granted that their systems can do more than one thing at a time. They assume that they can continue to work in a word processor, while other app…...

放松一下,简简单单了

哈哈哈哈哈...

【智能制造-5】数采和电机

既然可以采集PLC的数据&#xff0c;为什么要采集电机的数据&#xff1f; 采集PLC&#xff08;可编程逻辑控制器&#xff09;的数据和采集电机的数据是两个不同的概念和目的。 PLC是用于控制和监控工业自动化过程的设备&#xff0c;它可以接收传感器的输入信号并根据预设的逻辑…...

【软考论文】论信息系统的安全性与保密性设计

目录 一、题目二、论文2.1 摘要2.2 正文三、扩展3.1 信息安全包括5个基本要素3.2 国产秘钥算法3.3 等保(信息安全等级保护)3.4 其他一、题目 在企业信息化推进的过程中,需要建设许多信息系统,这些系统能够实现高效率、低成本的运行,为企业提升竞争力。但在设计和实现这些…...

【图文教程】电脑查看显卡GPU温度方法:小白也能秒懂!

在电脑操作中&#xff0c;显卡是电脑的重要组件之一&#xff0c;其温度控制对于保持系统稳定运行是特别重要的。但是&#xff0c;许多新手用户不知道要怎么操作才能查看电脑显卡CPU的温度&#xff1f;接下来小编给大家介绍三种简单有效的查看显卡温度方法&#xff0c;操作简单&…...

Qt的智能终端项目文档完整版

由于上一篇文章已经把用户端的页面都显示了&#xff0c;这里就不在赘述&#xff0c;就将那个运行在虚拟机上的截图展示下来了&#xff0c;其实这个也就是最后的效果了。目前就是这个&#xff0c;感觉当练手的也还行...

SQL面试题练习 —— 查询最近一笔有效订单

目录 1 题目2 建表语句3 题解 题目来源&#xff1a;字节跳动。 1 题目 现有订单表t_order&#xff0c;包含订单ID&#xff0c;订单时间,下单用户&#xff0c;当前订单是否有效&#xff0c;请查询出每个用户每笔订单的上一笔有效订单 ----------------------------------------…...

分享HTML显示2D/3D粒子时钟

效果截图 实现代码 线上体验&#xff1a;three.jscannon.js Web 3D <!DOCTYPE html> <head> <title>three.jscannon.js Web 3D</title><meta charset"utf-8"><meta name"viewport" content"widthdevice-width,ini…...

Java——IDEA使用

一、IDEA介绍 IntelliJ IDEA 是 JetBrains 公司开发的一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于 Java 编程语言&#xff0c;但也支持多种其他语言和框架。由于其强大的功能和灵活性&#xff0c;IntelliJ IDEA 被广泛应用于软件开发领域&…...

高性能STL库 EASTL 、高性能JSON库

GitHub - electronicarts/EASTL: EASTL stands for Electronic Arts Standard Template Library. It is an extensive and robust implementation that has an emphasis on high performance. 兄弟们&#xff0c;对STL要求性能高的可以试试这个EASTL库&#xff01;&#xff01…...

多通道采集器采样接口设计[进行中...]

1.技术问题 这是一个非常小的设计&#xff0c;完全不值得把它展示出来。但是因为这个接口设计关系到一些细微的配置和技术限制&#xff0c;仍然有一些细节需要处理&#xff0c;并且很容易出错&#xff0c;我们先把技术问题罗列一下&#xff1a; 多个传感器对应的多个逻辑通道…...

rapidjson使用中crash问题分析

问题 在使用rapidjson时&#xff0c;使用Document的Parse方法解析json字符串&#xff0c;程序crash。 分析 可以参考https://github.com/Tencent/rapidjson/issues/1269&#xff0c;由于rapidjson的内存分配器默认认为内存分配成功&#xff0c;没有对分配后做判空判断&#…...

TCP协议中的三次握手和四次挥手机制

TCP协议中的三次握手和四次挥手机制 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的通信协议&#xff0c;它的三次握手和四次挥手机制是建立和断开连接的关键步骤。 三次握手&#xff1a; 第一次…...

Linux双网卡默认路由的metric设置不正确,导致SSH连接失败问题定位

测试环境 VMware虚拟机 RockyLinux 9 x86_64 双网卡&#xff1a;eth0(访问外网): 10.206.216.92/24; eth1(访问内网) 192.168.1.4/24 问题描述 虚拟机重启后&#xff0c;SSH连接失败&#xff0c;提示"Connection time out"&#xff0c;重启之前SSH连接还是正常的…...

Batch入门学习:从零开始掌握批处理脚本

目录 1. Batch脚本简介 1.1 什么是Batch脚本&#xff1f; 1.2 Batch脚本的历史 1.3 Batch脚本的应用场景 2. Batch脚本基本语法 2.1 注释 2.2 变量 2.3 常用命令 2.3.1 ECHO 2.3.2 PAUSE 2.3.3 CLS 2.3.4 GOTO 2.3.5 IF 2.3.6 FOR 2.4 参数传递 2.5 输入输出重…...

diffusion model(十八):diffusion model中negative prompt的工作机制

info个人博客主页http://myhz0606.com/article/ncsn 前置阅读&#xff1a; DDPM&#xff1a; http://myhz0606.com/article/ddpm classifier-guided&#xff1a;http://myhz0606.com/article/guided classifier-free guided&#xff1a;http://myhz0606.com/article/classi…...

Python | Leetcode Python题解之第200题岛屿数量

题目&#xff1a; 题解&#xff1a; class Solution:def dfs(self, grid, r, c):grid[r][c] 0nr, nc len(grid), len(grid[0])for x, y in [(r - 1, c), (r 1, c), (r, c - 1), (r, c 1)]:if 0 < x < nr and 0 < y < nc and grid[x][y] "1":self.d…...

利用圆上两点和圆半径求解圆心坐标

已知圆上两点P1&#xff0c;P2&#xff0c;坐标依次为 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1​,y1​),(x2​,y2​)&#xff0c;圆的半径为 r r r&#xff0c;求圆心的坐标。 假定P1&#xff0c;P2为任意两点&#xff0c;则两点连成线段的中点坐标是 x m i …...

从ChatGPT代码执行逃逸到LLMs应用安全思考

摘要 11月7日OpenAI发布会后&#xff0c;GPT-4的最新更新为用户带来了更加便捷的功能&#xff0c;包括Python代码解释器、网络内容浏览和图像生成能力。这些创新不仅开辟了人工智能应用的新境界&#xff0c;也展示了GPT-4在处理复杂任务方面的惊人能力。然而&#xff0c;与所有…...

Python入门-基础知识-变量

1.标识符与关键字 Python语言规定&#xff0c;标识符由字母、数字和下画线组成&#xff0c;且不允许以数字开头。合法的标识符可以 是student_1、 addNumber、num等&#xff0c;而3number、2_student等是不合法的标识符。在使用标识符时应注意以下几点。 (1)命名时应遵循见名知…...

设计模式原则——接口隔离原则

设计模式原则 设计模式示例代码库地址&#xff1a; https://gitee.com/Jasonpupil/designPatterns 接口隔离原则 要求程序员尽量将臃肿庞大的接口拆分为更小的和更具体的接口&#xff0c;让接口中只包含客户感兴趣的方法接口隔离原则的目标是降低类或模块之间的耦合度&…...

MySQL数据库——在Centos7环境安装

MySQL在Centos7环境安装 1.切换root用户 安装与卸载中&#xff0c;用户全部切换成为root&#xff0c;安装好后&#xff0c;普通用户也能使用 2.卸载不要的环境 要将自己环境中有关mysql的全都删除&#xff0c;避免安装过程中被影响 ps axj | grep mariadb 先检查是否有mari…...

怎样规避液氮容器内部结霜的问题

液氮容器内部结霜问题一直是我们在使用液氮储存罐时遇到的一个棘手难题。液氮的极低温度使得容器内部很容易产生结霜现象&#xff0c;这不仅影响了容器的正常使用&#xff0c;还可能对内部样品或设备造成损坏。因此&#xff0c;如何有效规避液氮容器内部结霜问题成为了每个使用…...

冶金工业5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

冶金工业5G智能工厂工业物联数字孪生平台&#xff0c;推进制造业数字化转型。传统生产方式难以满足现代冶金工业的发展需求&#xff0c;数字化转型成为必然趋势。通过引入5G、工业物联网和数字孪生等先进技术&#xff0c;冶金工业可以实现生产过程智能化、高效化和绿色化&#…...

一文入门机器学习参数调整实操

作者前言: 通过向身边的同事大佬请教之后&#xff0c;大佬指点我把本文的宗旨从“参数调优”改成了“参数调整”。实在惭愧&#xff0c;暂时还没到能“调优”的水平&#xff0c;本文只能通过实操演示“哪些操作会对数据训练产生影响”&#xff0c;后续加深学习之后&#xff0c;…...

基于51单片机的银行排队呼叫系统设计

一.硬件方案 本系统是以排队抽号顺序为核心&#xff0c;客户利用客户端抽号&#xff0c;工作人员利用叫号端叫号&#xff1b;通过显示器及时显示当前所叫号数&#xff0c;客户及时了解排队信息&#xff0c;通过合理的程序结构来执行排队抽号。电路主要由51单片机最小系统LCD12…...

JXCategoryView的使用总结

一、初始化 -(JXCategoryTitleView *)categoryView{if (!_categoryView) {_categoryView [[JXCategoryTitleView alloc] init];_categoryView.delegate self;_categoryView.titleDataSource self;_categoryView.averageCellSpacingEnabled NO; //是否平均分配项目之间的间…...

Centos9 安装VBox增强功能问题

安装步骤 更新gcc 首先手动更新gcc&#xff0c;防止无法兼容最新版本的内核&#xff0c;我这里将gcc 11更新到gcc 13 1.首先更新当前gcc和支持 yum install -y gcc gcc-c 2.下载新版本gcc压缩包 wget http://ftp.gnu.org/gnu/gcc/gcc-13.1.0/gcc-13.1.0.tar.gz 解压到usr ta…...

【JVM】Java虚拟机运行时数据分区介绍

JVM 分区&#xff08;运行时数据区域&#xff09; 文章目录 JVM 分区&#xff08;运行时数据区域&#xff09;前言1. 程序计数器2. Java 虚拟机栈3. 本地方法栈4. Java 堆5. 方法区6. 运行时常量池7. 直接内存 前言 之前在说多线程的时候&#xff0c;提到了JVM虚拟机的分区内存…...