C指针介绍(1)

文章目录

  • 每日一言
  • 指针的简单介绍
  • 内存和地址
  • 指针在内存中的存储
  • 指针的定义和声明
    • 泛型指针
  • 指针的关系运算
    • 算数运算
    • 关系运算
  • 结语

每日一言

⭐「 一声梧叶一声秋,一点芭蕉一点愁,三更归梦三更后。 」–水仙子·夜雨-徐再思


指针的简单介绍

C语言指针是C语言中一种非常重要的数据类型,它可以存储内存地址,通过操作指针可以实现对内存中数据的直接访问和修改。C语言指针的使用是C语言高级特性的一个重要组成部分,也是C语言程序员必须掌握的基本知识之一。指针在C语言中广泛用于数据结构、动态存储分配、函数指针等方面。本系列将介绍指针的基本概念、指针的定义和声明、指针的运算、指针和数组、指针和函数等内容,帮助读者理解C语言指针。

内存和地址

在讲指针之前,首先要先了解内存和地址。

内存是计算机中用来存储数据和程序的部件,它被分成了许多个存储单元,每个存储单元都有一个唯一的地址用来访问它。在程序运行时,数据会被加载到内存中,程序也会在内存中执行。

地址是内存中每个存储单元的唯一标识符,它用来定位并访问内存中的数据。每个地址都是一个数字或一组数字,它们按照一定的顺序排列,可以被用来读取或写入内存中的数据。

指针在内存中的存储

指针是一个变量,它存储了一个地址,这个地址指向内存中的某个位置。在内存中,每个变量占用一段连续的空间,这段空间的大小取决于变量的类型。指针所占用的空间大小通常是固定的,例如在32位操作系统上,指针的大小通常是4字节,而在64位操作系统上,指针的大小通常是8字节。

当声明一个指针变量时,计算机会为这个指针分配一段内存,这段内存的大小是固定的,并且与指针的类型相关。例如,如果声明一个int类型的指针变量,那么计算机会为这个指针分配4/8字节的内存空间。

ps:
在32位系统下:int占4个字节
在64位系统下:int占8个字节

当指针被赋值时,它会存储一个内存地址,这个地址指向某个变量或对象的内存空间。当使用指针访问该变量或对象时,计算机会将该地址解引用,得到指向内存中实际变量或对象的指针,然后就可以对其进行操作或读取其值。

指针的定义和声明

指针是一个变量,其值表示另一个变量的地址。指针可以用来访问、修改另一个变量的值。

指针的声明格式为:类型 *变量名;其中,类型表示指针所指向的变量的类型,变量名表示指针的名称。

下面是一个简单的指针变量

int a= 10;
int *pa = &a;
*pa = 20;

其中
在这里插入图片描述

在这里插入图片描述
以上代码执行的效果就是将a的值改为20。

那么怎么理解这个过程呢?

我们可以把a看做自己,我点了一份外卖,在电话中,我们告诉了外卖小哥(pa)我的家庭住址,于是外卖小哥(pa)通过地址找到了我,将外卖送到了我手上。

指针的类型决定了对指针解引用的时候一次能操作几个字节,在这其中有一种特殊的类型

泛型指针

所谓 void * 指针是指无具体类型的指针(或者叫泛型指针),这种类型的指针可以用来接受任意类型的地址,但相对的void * 类型的指针不能直接进行指针的加减和解引用的运算。如果非要运算,请先强制类型转换!!!

指针的关系运算

指针的运算包括两种:算术运算和关系运算。

算数运算

指针可以进行加、减运算。
对于指针p,p+1表示p所指向的下一个内存单元的地址,p-1表示p所指向的前一个内存单元的地址。这种运算的本质是在指针所指向的地址上加上某个值,得到一个新的地址。
在这里插入图片描述

注意:在进行指针运算时,要确保两个指针指向的内存是同一块空间,且指针运算不会越界。

关系运算

指针可以进行比较运算。例如,对于指针p和q,p>q表示p所指向的地址大于q所指向的地址,p<q表示p所指向的地址小于q所指向的地址。


结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
想成为大佬那就保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

wvp如果确认音频udp端口开放成功

用到工具 在服务器上开启端口监听 选中udp server&#xff0c;点击创建按钮 设置服务器监听端口 在客户端连接服务器端口 选中udp客户端&#xff0c;点击创建 输入服务器地址 远程端口和本地端口&#xff0c;本地端口只要没被占用都可以使用 &#xff0c;点击确认 发送数据 …

万界星空科技智能工厂主要建设模式

由于各个行业生产流程不同&#xff0c;加上各个行业智能化情况不同&#xff0c;智能工厂有以下几个不同的建设模式。 第一种模式&#xff1a;是从生产过程数字化到智能工厂 在石化、钢铁、冶金、建材、纺织、造纸、医药、食品等流程制造领域&#xff0c;企业发展智能制造的内在…

代码随想录刷题题Day4

刷题的第四天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C / Python Day4 任务 ● 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II 1 …

使用 OpenFunction 在任何基础设施上运行 Serverless 工作负载

作者&#xff1a; 霍秉杰&#xff1a;KubeSphere 可观测性、边缘计算和 Serverless 团队负责人&#xff0c;Fluent Operator 和 OpenFunction 项目的创始人&#xff0c;还是多个可观测性开源项目包括 Kube-Events、Notification Manager 等的作者&#xff0c;热爱云原生技术&am…

Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(一)

学习视频&#xff1a;孙哥说SpringMVC&#xff1a;结合Thymeleaf&#xff0c;重塑你的MVC世界&#xff01;&#xff5c;前所未有的Web开发探索之旅 第五章、SpringMVC控制器开发详解 三 5.1 核心要点 3.流程跳转 5.2 JavaWeb中流程跳转的核心回顾 5.2.1 JavaWeb中流程跳转的核…

【教学类-06-12】20231202 0-9数字分合-房屋样式(一)-下右空-升序-抽7题

作品展示-屋顶分合&#xff08;0-9之间随机抽取7个不重复分合&#xff09; 背景需求&#xff1a; 大班幼儿学分合题&#xff0c;通常区角里会设计一个“房屋分合”的样式 根据这种房屋样式&#xff0c;设计0-9内的升序分合题模板 素材准备 WORD样式 代码展示&#xff1a; 2-9…

vue3请求代理proxy中pathRewrite失效

问题引入 在vue3配置请求代理proxy的时候pathRewrite失效。 有这样一个例子&#xff0c;作用是为了把所有以/api开头的请求代理到后端的路径和端口上&#xff0c;在vue.config.js配置文件中 设置了代理跨域和默认端口。但是重新运行之后发现端口是改了&#xff0c;但是路径仍然…

fl studio21.2最新汉化中文完整版网盘下载

fl studio 21中文版是Image-Line公司继20版本之后更新的水果音乐制作软件&#xff0c;很多用户不太理解&#xff0c;为什么新版本不叫fl studio 21或fl studio2024&#xff0c;非得直接跳到21.2版本&#xff0c;其实该版本是为了纪念该公司22周年&#xff0c;所以该版本也是推出…

认知觉醒(二)

认知觉醒(二) 内观自己&#xff0c;摆脱焦虑 第一章 大脑——一切问题的起源 第一节 大脑&#xff1a;重新认识你自己 我猜很多人并不真正了解自己&#xff0c;甚至从未了解过&#xff0c;所以才会对自身的各种问题困惑不已。这里我说的“自己”&#xff0c;特指自己的大…

自定义类型:结构体(自引用、内存对齐、位段(位域))

目录 一. 结构体类型的声明和定义 1.1结构体相关概念 1.11结构的声明 1.12成员列表 1.2定义结构体类型变量的方法 1.21先声明结构体类型再定义变量名 ​​​​1.22在声明类型的同时定义变量 1.23直接定义结构类型变量 二、结构体变量的创建、初始化​和访问 2.1结构体…

VS安装QT VS Tools编译无法通过

场景&#xff1a; 项目拷贝到虚拟机内部后&#xff0c;配置好相关环境后无法编译&#xff0c;安装QT VS Tools后依旧无法编译&#xff0c;查找资料网上说的是QT工具版本不一致导致的&#xff0c;但反复试了几个版本后依旧无法编译通过。错误信息如下&#xff1a; C:\Users\Ad…

【动态规划】LeetCode-64.最小路径和

&#x1f388;算法那些事专栏说明&#xff1a;这是一个记录刷题日常的专栏&#xff0c;每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目&#xff0c;在这立下Flag&#x1f6a9; &#x1f3e0;个人主页&#xff1a;Jammingpro &#x1f4d5;专栏链接&…

第九节HarmonyOS 常用基础组件4-Button

一、Button Button组件主要用来响应点击操作&#xff0c;可以包含子组件。 示例代码&#xff1a; Entry Component struct Index {build() {Row() {Column() {Button(确定, { type: ButtonType.Capsule, stateEffect: true }).width(90%).height(40).fontSize(16).fontWeigh…

大数据技术之Flume(超级详细)

大数据技术之Flume&#xff08;超级详细&#xff09; 第1章 概述 1.1 Flume定义 Flume是Cloudera提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构&#xff0c;灵活简单。 1.2 Flume组成架构 Flume组成架构如…

C# WPF上位机开发(计算器界面设计)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 c# wpf最大的优势就是开发业务软件比较快、效率比较高。一般来说&#xff0c;它的界面和逻辑部分可以同时开发。界面的部分用xaml编写即可&#xf…

深度学习——第03章 Python程序设计语言(3.1 Python语言基础)

无论是在机器学习还是深度学习中&#xff0c;Python已经成为主导性的编程语言。而且&#xff0c;现在许多主流的深度学习框架&#xff0c;例如PyTorch、TensorFlow也都是基于Python。本课程主要是围绕“理论实战”同时进行&#xff0c;所以本章将重点介绍深度学习中Python的必备…

解读Java虚拟机垃圾回收器:探究经典算法背后的奥秘

目录 一、GC分类与性能指标 &#xff08;一&#xff09;垃圾回收器分类 &#xff08;二&#xff09;性能指标 &#xff08;三&#xff09;不可能三角 二、不同的垃圾回收器概述 三、Serial回收器&#xff1a;串行回收 四、ParNew回收器&#xff1a;并行回收 五、Parall…

Nginx实现多虚拟主机配置

Nginx实现多虚拟主机配置 Nginx为什么要进行多虚拟主机配置呢&#xff1f;what&#xff1f; Nginx实现多虚拟主机配置的主要原因是&#xff0c;一个服务器可能会承载多个网站或应用程序&#xff0c;这些网站或应用程序需要使用不同的域名或IP地址来进行访问。如果只有一个虚拟…

SHAP(五):使用 XGBoost 进行人口普查收入分类

SHAP&#xff08;五&#xff09;&#xff1a;使用 XGBoost 进行人口普查收入分类 本笔记本演示了如何使用 XGBoost 预测个人年收入超过 5 万美元的概率。 它使用标准 UCI 成人收入数据集。 要下载此笔记本的副本&#xff0c;请访问 github。 XGBoost 等梯度增强机方法对于具有…

Python----Pandas

目录 Series属性 DataFrame的属性 Pandas的CSV文件 Pandas数据处理 Pandas的主要数据结构是Series&#xff08;一维数据&#xff09;与DataFrame&#xff08;二维数据&#xff09; Series属性 Series的属性如下&#xff1a; 属性描述pandas.Series(data,index,dtype,nam…