初识指针の学习笔记

news2024/11/28 20:43:54

目录

 

1>>前言

2>>内存和地址 

3>>指针变量和地址

3.1取地址和解引用

3.2>>指针类型是什么?

3.3>>指针变量占用空间

4>>指针变量类型的意义

4.1>>指针的解引用

4.2>>指针+-整数

5>>关于指针的运算

5.1const修饰指针

5.2指针+-整数

5.3>>指针减指针

6>>总结

 

 

1>>前言

        今天我会分享一些我做的笔记,以及我对指针的理解, 后续应该会持续分享指针几天,毕竟指针的内容太多了,一天我也学不完,也分享不完,感谢大家理解,希望我的文章对大家有所帮助,谢谢!

2>>内存和地址 

        首先来了解什么是内存,以下来自百度(内存(Memory)是计算机的重要部件,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成,CPU将结果传送出来。)我们现在所使用的内存有8G、16G、32G,硬盘(外存)有128G、256G、512G,这就是内外存的区别。

还需了解内存中的转换:

1Byte=8bit(1字节=8比特位)

内存单位的编号——地址

C语言给地址取了一个新的名字——指针

所以内存单位的编号=地址=指针

还需知道创建变量的本质就是向内存申请一块地址空间

3>>指针变量和地址

3.1取地址和解引用

        取地址操作符是&,解引用为*,它们两个是一对,我们可以假设有一个变量a,可以通过&a知道它的地址,指针变量则是专门为存放地址而生

17c0beea330c49dca20f2af296fa87f0.png
那么我们想要通过指针改变原本变量的数值,则是用到解引用操作符*

e71479428c154ff9b87639c03f3bf5ba.png

3.2>>指针类型是什么?

        我们数据类型有int,char,long等等,那么指针类型是什么?

314f5ca89faa45808a60e76d1adc42da.png

在上面这张图片中可以看到p的类型就是int*

e11fe35d2f9d481a86b8269cea0c347d.png

而这张图片中指针的类型为char*,通过观察我们可以知道,指针的类型根据内容的类型确定,假设我们a是double型,那么指针则为double*星号*代表这是一个指针变量 。

3.3>>指针变量占用空间

        在x64操作系统中,指针变量的大小为8字节,x86操作系统中,指针变量大小为4字节。在Dev/C++编译器中,在箭头处修改操作系统位数。

3344f2cdf95745369055f32d07da04e8.png

这里能看到数值变成4(字节)了

这里需要注意指针变量的大小只跟操作系统位数有关,并不涉及类型大小

4bd6c506ecfa48b0aafc4c318a4e25c0.png

4>>指针变量类型的意义

4.1>>指针的解引用

        指针解引用时需要注意指针的类型,最好和变量相同,否则易出现如下问题,只修改部分数值:

0f61b2a321e24b2189dcd73d6cefbeb2.png

4.2>>指针+-整数

        指针加减一个整数时,操作的是指针的地址,根据数据类型的大小进行加减,int类型就加减4

2e74c311b93045d7bc43b05e1f439623.png

char类型则加1

6d3ef839b1a64bd5ac30b41958f08c8f.png

5>>关于指针的运算

5.1const修饰指针

        我们知道const修饰的变量它就会获得常量属性,变成一个常变量,那么我们修饰指针呢?该怎么修饰?别急,我们慢慢看:

131483fe34bd42099f3b4db5f8e276e4.png

3fe0597b294347b4b48160ffd35af437.png

通过以上两组实验我们可以发现,当const在*左边时指针所指向的内容不能改变,当const在*右边时指针的地址不能改变,这时肯定有人提出疑问,能不能两边都放?我的回答是当然可以,两边都放时,指针所指向的内容以及指针的地址都不能发生改变,否则就会报错。

5.2指针+-整数

        在前面我们已经讲到了简单指针加减整数基本用法,现在我们把它放到数组中看看。我们首先需要知道数组中的元素地址是连续的。

7174ae631c5f4300913ab47ed6c8401e.png

这里通过指针的运算可以打印出数组里的每一个元素,因为数组中的地址是连续的,p又代表首元素地址,所以p+1就是下标为1的地址,p+2就是下标为2的地址,以此类推就能得出打印结果。

5.3>>指针减指针

        指针-指针的绝对值可以得到一个指针到另一个指针之间的元素个数,但他们有一个运算前提,那就是指向同一个空间。

db9736e9f30342f1aa13013666333872.png

这里可以看到第一个元素到第十个元素之间有九个元素。这里可以用这张图帮助理解。

ce14247e4b18497daae3e53c63543e07.png

此时我们还可以通过指针来写一个统计字符串长度的代码:

#include<stdio.h>

int my_sizeof(char* p)
{
	int c=0;
	while(*p)
	{
		p++;
		c++;
	}
	return c;
}
int main()
{
	char arr[]={"abcdef"};
	int b=my_sizeof(arr);
	printf("%d\n",b);
	return 0;
}

9d67672bc51f4dc7a14e5c9ac4ff3079.png

这代码怎么做到的呢,不急,我们先要知道\0等于0等于假,字符串又是以\0为结束标志,那么我们就以*p为判断条件,每次不遇到\0就++,用于计数的c也进行++,当遇到\0时,为假跳出循环,范围计数c,我们就可以知道结果。

6>>总结

        今天刚学指针的部分内容,此篇讲述了指针变量的取地址和解引用,指针变量的运算等等,以学习笔记的方式分享给大家,希望能得到大家喜欢,后续会持续分享指针内容,大家的三连是我持续更新的动力,谢谢大家啦!

 

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

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

相关文章

「OC」暑假第三周——天气预报的仿写

「OC」暑假第三周——天气预报的仿写 文章目录 「OC」暑假第三周——天气预报的仿写写在前面预览UItableView嵌套UICollectionView毛玻璃效果SVGKit库的使用简单的动画实现主页之中详情页的编写总结 写在前面 天气预报作为暑假最后的一个项目&#xff0c;算得上我觉得有点用的…

西门子PLC跟汇川H5U系列PLC标签方式以太网通讯的快速实现方案

PLC通讯智能网关IGT-DSER模块支持汇川、西门子、三菱、欧姆龙、罗克韦尔AB、GE等各种品牌的PLC之间通讯&#xff0c;同时也支持PLC与Modbus协议的变频器、智能仪表等设备通讯。网关有多个网口、串口&#xff0c;也可选择WIFI无线通讯。PLC内无需编程开发&#xff0c;在智能网关…

金九银十秋招大模型岗位攻略来了,已收offer,非常详细收藏我这一篇就够了

秋季招聘季节是求职者寻找新机会的重要时期&#xff0c;特别是对于想要进入大模型领域的专业人士来说。以下是一份大模型学习攻略和应聘攻略&#xff0c;帮助你为秋季招聘做好准备&#xff1a; 大模型学习攻略 理解大模型基础 学习AI基础&#xff1a;了解机器学习、深度学习的…

[数据集][目标检测]扳手检测数据集VOC+YOLO格式1042张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1042 标注数量(xml文件个数)&#xff1a;1042 标注数量(txt文件个数)&#xff1a;1042 标注…

论文阅读1 Scaling Synthetic Data Creation with 1,000,000,000 Personas

Scaling Synthetic Data Creation with 1,000,000,000 Personas 链接&#xff1a;https://github.com/tencent-ailab/persona-hub/ 文章目录 Scaling Synthetic Data Creation with 1,000,000,000 Personas1. 摘要2. 背景2.1 什么是数据合成2.2 为什么需要数据合成2.3 10亿种人…

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署 什么是RAG&#xff1a; 我能把这个过程理解为Kimi.ai每次都能列出的一大堆网页参考资料吗&#xff1f;Kimi学了这些资料以后&#xff0c;根据这里面的信息综…

支持2.4G频秒变符合GB42590的标准的飞行器【无人机GB42590发射端】

使用方法: 放在飞机 上&#xff0c;按键那一面需要朝上对着天空(因为GPS陶瓷天线在按键面)&#xff0c;支持基本ID&#xff0c;向量和系统包&#xff0c;电池容量240mAH充电1小时&#xff0c;使用时间大概2小时。 1.长按3秒开关机 2.开机红灯慢闪&#xff0c;只发射基本ID数据…

Spring核心思想讲解之控制反转(IOC)

控制反转概述 控制反转实现方式 XML方式 方式一 方式二 方式三 注解方式 第一步 第二步 第三步 依赖注入&#xff08;DI&#xff09;实现方式 XML方式 手动注入 set注入 构造器注入 自动注入 set注入 构造方法注入 注解方式 方式一&#xff1a; 方式二&…

IO流【详解】

一、IO流 1.1 IO说明 Input 输入 Output 输出 流: 例如水流,流量,即流是指数据流动传输 IO流就是指数据的输入输出 例如: 将磁盘中的小说.txt,读取到java代码中 ---> 输入 例如: 从java代码中,写到磁盘中创建出文件,并向文件中写入内容 --> 输出 1.2 IO体系 IO 字节…

新手也能快速上手!免费的四款视频剪辑神器大揭秘

现在好用的剪辑工具好的的呀&#xff0c;只要有玩抖音、快手和一些视频为主的社交平台&#xff0c;大家都会尝试用一些剪辑工具自己动手剪辑&#xff0c;在近几年视频的热度之下这类工具做得也越来越专业了&#xff0c;当然其中也还是会有既专业又免费实用的产品&#xff0c;今…

教程:一步步教你构建基于Python Flask和Vue的智慧书析K-means分析系统

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡

fdisk -l df -h df -t df -T mount 20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡 2024/8/21 18:06 【切记&#xff0c;对于Rockchip原厂的Buildroot&#xff0c;如果你没有针对性的适配DTS&#xff1a;修改其中的GPIO口供电&#xff0c…

分析AAC raw data

分析AAC raw data 本文的主要目标是分析说明AAC解码器如何处理RAW AAC数据。通过拆解理解AAC解码器处理raw aac的关键点&#xff0c;通过数据分析和代码阅读&#xff0c;来说明这个细节&#xff0c;某些细微之处尚需深入探索&#xff0c;留待后续更为详尽的阐述。 几种格式介…

C语言 ——— 常见的动态内存错误(上篇)

对NULL指针的解引用操作 代码演示&#xff1a; int* ptr (int*)malloc(sizeof(int) * INT_MAX); *ptr 10; free(ptr); 代码解析&#xff1a; 使用 malloc 函数动态开辟 sizeof(int)*INT_MAX 这么多个字节的空间&#xff0c;而 INT_MAX 是整型类型的最大值&#xff0c;那么…

优化WAN流量:如何通过调整系统设置降低企业网络成本

一、症状与问题背景 当电脑显示空闲状态时&#xff0c;如果满足以下条件&#xff0c;第二拨号链接可能会意外激活&#xff1a; 您正在使用基于 Microsoft Windows 的计算机&#xff0c;该计算机连接到远程网络并且是 Active Directory 域服务 (AD DS) 域的成员。 您通过二级…

jpg怎么转换成pdf?6个简单方法,实现jpg转换成pdf

你是否也曾想将jpg图片转换为pdf格式文档呢&#xff1f;亦或者在处理文档或制作报告时&#xff0c;不知道怎么才能更快地将多张图片整合成一个pdf文件呢&#xff1f;如果你正在寻找简单快速的方法&#xff0c;又有哪些工具可以帮助您完成图片转pdf呢&#xff1f;别着急&#xf…

Windows服务器部署基于【若依管理系统】开发的项目

&#x1f3af;导读&#xff1a;本文档详述了基于前后端分离的若依系统&#xff08;版本3.8.8&#xff09;在Windows环境下从零开始的部署流程&#xff0c;包括JDK、Redis、MySQL等环境的搭建与配置。前端部署涉及Vue项目构建、图片优化及利用Nginx托管&#xff1b;而后端则涵盖…

猫咪掉毛严重如何清理?希喂,霍尼韦尔宠物空气净化器实测分享

随着养宠人群的增多&#xff0c;市场关注到铲屎官们的需要&#xff0c;带来了新的科技产品——宠物空气净化器。宠物空气净化器是在普通空气净化器基础上&#xff0c;调整服务对象&#xff0c;为吸附宠物毛发而设计的。不少消费者被它的功能所吸引&#xff0c;打算购入使用。然…

带你速通C语言——函数(11)

在 C 语言中&#xff0c;函数是组织代码的重要方式&#xff0c;它们允许我们将代码划分为可重用的模块&#xff0c;每个模块执行特定的任务。函数的使用有助于代码的清晰性和维护性&#xff0c;也是编写结构化程序的基本构建块之一。 1.函数的基本组成 在 C 中定义函数时&…

Agentic Security:一款针对LLM模型的模糊测试与安全检测工具

关于Agentic Security Agentic Security是一款针对LLM模型的模糊测试与安全检测工具&#xff0c;该工具可以帮助广大研究人员针对任意LLM执行全面的安全分析与测试。 请注意 Agentic Security 是作为安全扫描工具设计的&#xff0c;而不是万无一失的解决方案。它无法保证完全防…