C语言-指针

1. 指针是什么


        指针理解的2个要点:
        1.1. 指针是内存中一个最小单元的编号,也就是地址
        1.2 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量
        总结:指针就是地址,口语中说的指针通常指的是指针变量。

        1.3 指针变量里存放的是地址,而通过这个地址,就可以站到一个内存单元;

        1.4 总结:
         指针是用来存放地址的,地址是唯一标示一块地址空间的。
         指针的大小在32位平台是4个字节,在64位平台是8个字节。


2. 指针和指针类型

        char*类型的指针是为了存放 char 类型变量的地址。
        short* 类型的指针是为了存放 short 类型变量的地址。
        int*类型的指针是为了存放 int 类型变量的地址。

        2.1 指针加减整数:

        2.2 指针的解引用

        指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。
        比如:char*的指针解引用就只能访问一个字节,而int*的指针的解引用就能访问四个字节。

3. 野指针

        野指针就是指针指向的位置是不知的,它是随机的,无限制的,以及不确定。

        3.1 指针未初始化:

        #include <stdio.h>
        int main()
        {   
                    int *;        //局部变量指针未初始化,默认为随机的,无限制的,以及不确定的值
                    *i = 20;
                    return 0;
        }

        3.2. 指针越界访问:

        #include <stdio.h>

        int* test()

        {

                int a = 10;

                return = &a;

        }
        int main()
        {   
                    int* p = test();

                    return 0;
        }

        这里就出现了指针越界,原因a是局部变量,出了局部范围内存就销毁了,此时返回来的虽然是a的地址,但是里边的内容不是这个地址里边了,再去访问就属于越界访问。

        3.2 我们如何避免野指针:

        1. 指针初始化;
        2. 小心指针越界;
        3. 指针指向空间释放即使置NULL;
        4. 避免返回局部变量的地址;
        5. 指针使用之前检查有效性;


4. 指针运算

        5.二级指针:

        6.指针数组:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电力系统卫星授时信号安全隔离装置防护方案

电力系统是国家关键基础设施&#xff0c; 电力安全关系国计民生&#xff0c; 是国家安全的重要保障&#xff0c; 与政治安全、经济安全、 网络安全、社会安全等诸多领域密切关联。电网运行情况瞬息万变&#xff0c;为了在其发生事故时能够及时得到处理&#xff0c;需要统一的时…

2.6 类型安全配置属性

无论是Propertes配置还是YAML配置&#xff0c;最终都会被加载到Spring Environment中。 Spring提供了注解Value以及EnvironmentAware接口来将Spring Environment 中的数据注入到属性上&#xff0c;SpringBoot对此进一步提出了类型安全配置属性(Type-safeConfiguration Propert…

【华为笔试题汇总】2024-04-17-华为春招笔试题-三语言题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是KK爱Coding &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第五套

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第五套 (共9套&#xff0c;有答案和解析&#xff0c;答案非官方&#xff0c;仅供参考&#xff09;&#xff08;共九套&#xff0c;每套四十个选择题&#xff09; 部分题目分享&#xff0c;完整版获取&#xff08;WX:didadida…

OSPF的P2P和Broadcast

OSPF为什么会有P2P和BROADCAST两种类型 OSPF&#xff08;开放最短路径优先&#xff09;协议中存在P2P&#xff08;点对点&#xff09;和BROADCAST&#xff08;广播多路访问&#xff09;两种网络类型&#xff0c;主要是为了适应不同类型的网络环境和需求。具体分析如下&#xf…

ETL工具-nifi干货系列 第十三讲 nifi处理器QueryDatabaseTable查询表数据实战教程

1、处理器QueryDatabaseTable&#xff0c;该组件生成一个 SQL 查询&#xff0c;或者使用用户提供的语句&#xff0c;并执行它以获取所有在指定的最大值列中值大于先前所见最大值的行。查询结果将被转换为 Avro 格式&#xff0c;如下图所示&#xff1a; 本示例通过QueryDatabase…

初识SpringMVC(SpringMVC学习笔记一)

1 、还是熟悉的配方&#xff0c;先创建一个父Maven项目&#xff08;忘记怎么创建项目了就去前面翻笔记&#xff09;&#xff0c;导入通用的配置依赖 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…

【Vue3】setup语法糖的使用

文章目录 setup简介使用vite-plugin-vue-setup-extend插件 指定组件名字 setup简介 <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖 相比较普通的<script> ,它有以下优势&#xff1a; 更少的样板内容&#xff0c;更简洁的代码。能够使用纯…

一种多信号线粒体靶向荧光探针,用于同时区分生物硫醇并实时可视化其在癌细胞和肿瘤模型中的代谢

文献来源:https://www.sciencedirect.com/science/article/pii/S003991402300855X? 该探针应用&#xff1a; 用于区分生物硫醇&#xff0c;并依次检验代谢物 。 实时监测细胞、斑马鱼和肿瘤中的生物硫醇代谢。 一、背景介绍 生物硫醇 &#xff08;1&#xff09;种类 生…

基于springboot实现人口老龄化社区服务与管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现人口老龄化社区服务与管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了人口老龄化社区服务与管理平台的开发全过程。通过分析人口老龄化社区服务与管理平台方面的不足&#xff…

Node.js 中的 RSA 加密、解密、签名与验证详解

引言 在现代的网络通信中&#xff0c;数据安全显得尤为重要。RSA加密算法因其非对称的特性&#xff0c;广泛应用于数据的加密、解密、签名和验证等安全领域。本文将详细介绍RSA算法的基本原理&#xff0c;并结合Node.js环境&#xff0c;展示如何使用内置的crypto模块和第三方库…

Python接口自动化 —— Web接口(2)

1.2.3 HTTP HTTP概念 Hyper Text Transfer Protocal超文本传输协议&#xff0c;基于tcp/ip通信协议来传递数据&#xff0c;属于应用层协议主要特点: 无连接: 每次连接只处理一个请求&#xff0c;服务器处理完请求并受到客户端应答后就断开连接媒体独立。 只要服务器和客…

ActiveMQ 07 集群配置

Active MQ 07 集群配置 官方文档 http://activemq.apache.org/clustering 主备集群 http://activemq.apache.org/masterslave.html Master Slave TypeRequirementsProsConsShared File System Master SlaveA shared file system such as a SANRun as many slaves as requ…

【日常记录】【CSS】SASS循环的使用

文章目录 1、引言2、安装3、举例4、参考链接 1、引言 目前在任何项目框架中&#xff0c;都会有css 预处理器&#xff0c;目前一般使用 sass、less 这俩其中之一&#xff0c;它可以简化css的书写 Sass 是一款强化 CSS 的辅助工具&#xff0c;它在 CSS 语法的基础上增加了变量 (v…

HarmonyOS开发实例:【分布式数据服务】

介绍 分布式数据服务(Distributed Data Service&#xff0c;DDS)为应用程序提供不同设备间数据分布式的能力。通过调用分布式数据接口&#xff0c;应用程序将数据保存到分布式数据库中。通过结合帐号、应用和分布式数据服务对属于不同的应用的数据进行隔离&#xff0c;保证不同…

【kubeEdge】离线部署

部署 kubeEdge 在线部署 在线方式部署直接执行以下命令&#xff0c;会联网下载需要的安装文件执行安装 $ keadm init --advertise-address{ip} --kubeedge-version{version} --kube-config{config_path}&#xff0c; 离线部署 离线准备工作 所有下载操作均在可以联网的机…

VulnHub系列 DC-4靶机 渗透详细过程 | 红队打靶

VulnHub系列 DC-4靶机详细渗透测试过程 目录 VulnHub系列 DC-4靶机详细渗透测试过程一、将靶机导入到虚拟机当中二、渗透流程主机发现端口扫描Web渗透暴力破解命令执行反弹shellSSH暴力破解提权 一、将靶机导入到虚拟机当中 靶机地址&#xff1a; https://download.vulnhub.c…

JVM复习

冯诺依曼模型与计算机处理数据过程相关联&#xff1a; 冯诺依曼模型&#xff1a; 输入/输出设备存储器输出设备运算器控制器处理过程&#xff1a; 提取阶段&#xff1a;输入设备传入原始数据&#xff0c;存储到存储器解码阶段&#xff1a;由CPU的指令集架构ISA将数值解…

【leetcode面试经典150题】34.有效的数独(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

vue3第二十节(新增编译宏defineModel)

为什么会需要使用defineModel() 注意&#xff1a;defineModel() 需要在3.4及以上版本才可使用&#xff1b; 组件之间通讯&#xff0c;通过 props 和 emits 进行通讯,是单向数据流&#xff0c;比如&#xff1a;props是自上而下的&#xff08;父组件数据修改导致子组件更新&…