初识指针(2)<C语言>

news2024/11/15 11:46:36

前言

        前文介绍完了一些指针基本概念,下面介绍一下,const关键字、指针的运算、野指针的成因以及避免,assert函数等。


目录

const(常属性)

变量的常属性

 指针的常属性

 指针的运算

①指针+ -整数

②指针-指针

 ③指针与指针的比较

 野指针的成因以及避免

①指针未初始化,就使用

②指针越界访问数组 

 ③指针使用已释放的地址

assert(断言)函数


const(常属性)

变量的常属性

        变量是可以被修改的,也可以通过将其地址交给指针变量来进行修改。如果在变量声明阶段,在变量名前加上const,那么这个变量就具有了常属性,在后面就不能进行修改了。

         报错了,程序也不能正常运行。

 指针的常属性

        指针变量是否也能使用const来限制变量的修改呢?如果能够修改,const应该放哪呢?

在此之前先讲一讲3个容易弄混的概念(以指针变量p为例)

①p——指针变量,里面存放着一个地址

②*p——p中存放地址指向的对象

③&p——指针变量p的地址

两种情况:①const在“*”左边,限制的是*p,也就是p中存放地址指向的对象

        可以看到解引用指针p时报错,但是更改p中的地址是可以的。

②const在“*”右边,限制的是p中指向的对象。

        同理, 可以看到更改指针p指向地址时报错,但是更改p中的地址的对象的值是可以的。

        

 指针的运算

        指针的运算主要有以下三种:

①指针+ -整数

②指针-指针

③指针与指针的比较

①指针+ -整数

        上文说到,指针类型决定了指针向前一步或向后一步“走”多大距离,数组名是一个地址常量,存放的是第一个元素的地址,那么是否能够通过加减指针完成对数组的访问呢?

②指针-指针

        指针与指针的加法是无意义的。但是可通过指针与指针之间的减法完成对数组元素个数的统计。

 ③指针与指针的比较

        

 野指针的成因以及避免

        野指针就是指针指向位置是不可知的(随机的、不正确的、没有限制的)

成因:

①指针未初始化,就使用

②指针越界访问数组

③指针使用已释放的地址

①指针未初始化,就使用

②指针越界访问数组 

          因为指针越界访问数组导致打印出野指针

 ③指针使用已释放的地址

避免

①初始化指针,如果不知道指向哪,可以将指针赋值给NULL

②小心越界

③指针不再使用时及时置NULL,使用指针时,先检查指针的有效性

④避免返回局部变量的地址

assert(断言)函数

        assert()函数包含在库函数<assert.h>中,使用时需先声明。

        用法:用于确保程序满足指定条件,如果不符合,就报错终止运行

 也可以在函数开始加上#define NDEBUG使文件中的assert()函数失效,在release环境中默认失效。

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

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

相关文章

智慧工地)智慧工地标准化方案(107页)

2.2 设计思路 对于某某智慧工地管理系统的建设&#xff0c;绝不是对各个子系统进行简单堆砌&#xff0c;而是在满足各子系统功能的基础上&#xff0c;寻求内部各子系统之间、与外部其它智能化系统之间的完美结合。系统主要依托于智慧工地管理平台&#xff0c;来实现对众多子系统…

武汉星起航:助力客户在亚马逊平台顺利入驻,实现跨境电商新飞跃

在全球化浪潮的推动下&#xff0c;跨境电商行业迎来了前所未有的发展机遇。作为全球电商巨头&#xff0c;亚马逊以其独特的平台属性和消费群体较高的消费能力&#xff0c;吸引了众多中国卖家的目光。武汉星起航电子商务有限公司凭借其专业的运营团队和丰富的行业经验&#xff0…

软件测试与管理-白盒测试-逻辑覆盖法例题

目录 知识点&#xff1a; 例题 &#xff1a; 知识点&#xff1a; 语句覆盖&#xff1a;设计足够多的测试用例&#xff0c;使得被测试程序中的“ 每条可执行语句至少被执行一次” 优点&#xff1a;可通过源码观察直观地得到测试用例&#xff0c;无须细分每个判定表达式。缺点&am…

韧性增长与库存挑战并存,白酒行业上演“冰与火之歌”?

随着近日五粮液成绩单的公布&#xff0c;白酒板块主要上市公司的业绩均已出炉。 整体来看&#xff0c;虽然2023年白酒行业仍处于深度结构性调整&#xff0c;但相关上市公司业绩似乎并未受过多影响&#xff0c;均表现出喜人的增长态势&#xff0c;这也带动了白酒股的上行。据悉…

轻松上手的LangChain学习说明书

一、Langchain是什么&#xff1f; 如今各类AI模型层出不穷&#xff0c;百花齐放&#xff0c;大佬们开发的速度永远遥遥领先于学习者的学习速度。。为了解放生产力&#xff0c;不让应用层开发人员受限于各语言模型的生产部署中…LangChain横空出世界。 Langchain可以说是现阶段…

MySQL数据库—DQL查询语句(一篇教会你快速找到想要的数据)

目录 ▐ 特定列查询 ▐ 逻辑处理 ▐ 字符函数操作 ▐ 分组函数统计 ▐ 数学函数 ▐ 日期函数 ▐ 条件查询 ▐ 排序 ▐ 数量限制 ▐ 合并 ▐ 分组查询 ▐ 前言&#xff1a; • DQL全称 Data Query Language 数据查询语言 • 可以从一个表中查询数据&#xff0c;也…

数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计

前言 在上一篇文章中。我们完成了Qt环境的安装&#xff0c;同时完成了有关项目需求的分析并绘制了整体的项目架构图&#xff0c;而在图书管理系统中&#xff0c;其实我们主要完成的就是对数据的增删改查&#xff0c;并将这些功能通过信号与槽机制和可视化界面绑定在一起&#…

Fluent 区域交界面的热边界条件

多个实体域公共交界面的壁面&#xff0c;Fluent 会分拆为 wall 和 wall-shadow 的两个壁面&#xff0c;两者为配对关系&#xff0c;分别从属于一个实体域。 配对面可使用热通量、温度、耦合三类热边界条件&#xff0c;前两者统称为非耦合热边界条件。 耦合为配对面默认的热边界…

迭代器解释(C++)

一、什么是迭代器 为了提高C编程的效率&#xff0c;STL&#xff08;Standard Template Library&#xff09;中提供了许多容器&#xff0c;包括vector、list、map、set等。然而有些容器&#xff08;vector&#xff09;可以通过下标索引的方式访问容器里面的数据&#xff0c;但是…

TypeError报错处理

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、Python中的TypeError简介 这个错误通常表示在方法调用时&#xff0c;参数类型不正确&#xff0c;或者在对字符串进行格式化操作时&#xff0c;提供的变量与预期不符。 二、错误的源头&#xff1a;字符串格式化…

select,poll,epoll

在 Linux Socket 服务器短编程时&#xff0c;为了处理大量客户的连接请求&#xff0c;需要使用非阻塞I/O和复用&#xff0c;select&#xff0c;poll 和 epoll 是 Linux API 提供的I/O复用方式。 \selectpollepoll操作方式遍历遍历回调底层实现数组链表哈希表IO效率每次调用都进…

数据结构——链表专题1

文章目录 一、移除链表元素二、反转链表三、合并两个有序链表四、链表的中间节点五、环形链表的约瑟夫问题六、分割链表 一、移除链表元素 原题链接&#xff1a;移除链表元素 一个解法是遍历原链表&#xff0c;将与val相等的结点抛弃&#xff0c;链接后一个结点 另一个解法是…

被问了n遍的小程序地理位置权限开通方法

小程序地理位置接口有什么功能&#xff1f; 在平时我们在开发小程序时&#xff0c;难免会需要用到用户的地理位置信息的功能&#xff0c;小程序开发者开放平台新规要求如果没有申请开通微信小程序地理位置接口( getLocation )&#xff0c;但是在代码中却使用到了相关接口&#…

【go项目01_学习记录06】

学习记录 1 使用中间件1.1 测试一下1.2 push代码 2 URI 中的斜杆2.1 StrictSlash2.2 兼容 POST 请求 1 使用中间件 代码中存在重复率很高的代码 w.Header().Set("Content-Type", "text/html; charsetutf-8")统一对响应做处理的&#xff0c;我们可以使用中…

鸿蒙内核源码分析(原子操作篇) | 谁在为原子操作保驾护航

基本概念 在支持多任务的操作系统中&#xff0c;修改一块内存区域的数据需要“读取-修改-写入”三个步骤。然而同一内存区域的数据可能同时被多个任务访问&#xff0c;如果在修改数据的过程中被其他任务打断&#xff0c;就会造成该操作的执行结果无法预知。 使用开关中断的方…

【目标检测】Deformable DETR

一、前言 论文&#xff1a; Deformable DETR: Deformable Transformers for End-to-End Object Detection 作者&#xff1a; SenseTime Research 代码&#xff1a; Deformable DETR 特点&#xff1a; 提出多尺度可变形注意力 (Multi-scale Deformable Attention) 解决DETR收敛…

力扣每日一题115:不同的子序列

题目 困难 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 109 7 取模。 示例 1&#xff1a; 输入&#xff1a;s "rabbbit", t "rabbit" 输出&#xff1a;3 解释&#xff1a; 如下所示, 有 3 种…

2024视觉与学习青年学者研讨会(VALSE 2024)热点推文预告

视觉与学习青年学者研讨会&#xff08;VALSE&#xff09;是国内人工智能领域顶尖学者一年一度的研讨会。该会议的特点是大、全、新。会议的规模大&#xff0c;参会者达到五千人以上&#xff1b;会议的主题全&#xff0c;全面覆盖人工智能的各大领域&#xff1b;会议的内容新&am…

CSS Web服务器、2D、动画和3D转换

Web服务器 我们自己写的网站只能自己访问浏览&#xff0c;但是如果想让其他人也浏览&#xff0c;可以将它放到服务器上。 什么是Web服务器 服务器(我们也会称之为主机)是提供计算服务的设备&#xff0c;它也是一台计算机。在网络环境下&#xff0c;根据服务器提供的服务类型不…

【arduino】库的安装方法

arduino 库的安装方法 假设你已经安装好 Arduino IDE 以 OneButton 为例来介绍几种安装方法 文章目录 arduino 库的安装方法方法一&#xff1a;直接安装法方法二&#xff1a;导入 .ZIP库方法三&#xff1a;将库文件夹直接复制到贡献库路径下方法四&#xff1a;将库文件夹直接…