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.hqwc.cn/news/626052.html

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

相关文章

万兆以太网MAC设计(1)10G PCS PMA IP核使用

文章目录 一、设计框图二、模块设计三、IP核配置四、上板验证五、总结 一、设计框图 关于GT高速接口的设计一贯作风&#xff0c;万兆以太网同样如此&#xff0c;只不过这里将复位逻辑和时钟逻辑放到了同一个文件ten_gig_eth_pcs_pma_0_shared_clock_and_reset当中。如果是从第…

软考中级之数据库系统工程师笔记总结(三)操作系统

作者&#xff1a;Maynor 博客之星大数据领域Top1,GitHub项目awesome-chatgpt-project作者, 腾讯云TDSQL-C数据库开发者, 全网技术矩阵粉丝7w 公众号&#xff1a;Maynor996随着信息技术的飞速发展&#xff0c;数据库已成为现代企业和组织不可或缺的数据管理工具。对于许多专业人…

刷代码随想录有感(34):前k个高频元素

本题代码涉及到了多个陌生概念&#xff0c;题干如下&#xff1a; 代码; class Solution { public:class mycomparison{//自定义规则&#xff0c;使优先队列可以自动排序public:bool operator()(pair<int, int> & lhs, pair<int, int> & rhs){return lhs.s…

如何把车卖出去,什么营销最靠谱!

之前我看过雷军的《小米创业思考》&#xff0c;在书中他一直在强调互联网思维&#xff0c;这是一种非常好的思考模式&#xff0c;不仅限于互联网产品&#xff0c;在这次卖车上也一样展现的淋漓尽致。 营销一样需要被设计。提到&#xff0c;不少设计师首先想到的是做运营海报&am…

Zabbix监控Windows

1.在虚拟机中安装zabbix 安装系统一直托不进虚拟机中&#xff1b;因为没安装Tools组件 点击虚拟机&#xff0c;选择安装VMware Tools 2.配置zabbix

探索R语言的无限魅力,通晓数据可视化之道,助力科研之路!

本书特色 1.全面覆盖&#xff1a;本书从R语言的基础知识开始&#xff0c;逐步深入到科研绘图的高级技巧&#xff0c;为读者提供了一站式的科研绘图学习体验。 2.案例丰富&#xff1a;通过大量的实际案例&#xff0c;展示了R语言在科研绘图和学术图表绘制中的具体应用&#xf…

【办公类-22-03】20240417 UIBOT模拟上传获取流量券,并删除内容

背景需求&#xff1a; 为了获得CSDN每天两张的流量券&#xff0c;我每天都绞尽脑汁制作2个上传博文。 最近要育婴师考试和单位里的各类任务&#xff0c;我实在没有精力写代码了&#xff0c;于是我试试&#xff0c;能不能“假装”上传足够的篇数&#xff0c;先将每周的流量券都…

python-程序流程控制

目录 1、三元表达式 2、for 循环 3、while 循环 4、迭代遍历 1、三元表达式 python 支持从列表中挑选对象 用法&#xff1a; a [x,y][z] 如果 z 为真&#xff0c;将 y 赋值给 a&#xff0c;如果 z 为假&#xff0c;则将 x 赋值给 a 。 示例代码&#xff1a; x 1 a …

秋招之路 面经

这里参考一位很厉害的前辈所分享的他的嵌入式软件工程师秋招之路&#xff0c;自己详细的读了一下他的经历以及他的分享的秋招面试和项目经验的总结。 我的嵌入式软件工程师秋招之路&#xff08;文末送福利&#xff09;_嵌入式软件工程师 刷leetcode-CSDN博客 如何在面试中介绍…

HR系统采购之POC如何验证系统有效性

朋友公司要上HR系统项目&#xff0c;现在考虑是否要POC&#xff0c;因为之前接触比较少&#xff0c;想取取经。正好之前也算参与过一些企业级系统选型&#xff0c;正好整理一篇聊聊企业采购系统软件中POC有什么作用&#xff1f;怎么做&#xff1f;要注意什么&#xff1f; 一、…

IEEE顶刊!影响因子逐年攀升!同领域IEEE-Trans,仅47天录用!

&#xff08;一&#xff09;期刊简介概况 【期刊类型】计算机医学类SCIE&EI 【出版社】IEEE出版社 【期刊概况】IF&#xff1a;7.0-8.0&#xff0c;JCR1区&#xff0c;中科院2区TOP 【版面类型】正刊&#xff0c;仅10篇版面 【预警情况】2020-2024年无预警记录 【收录…

护网行动 | 蓝队应急响应流程概述

了解蓝队应急响应的流程 应急响应通常是指为了应对各种意外事件发生前所做的准备&#xff0c;以及在意外事件发生后所采取的措施。 网络安全应急响应是指对已经发生或可能发送的安全事件进行监控、分析、协调、处理、保护资产安全。 网络安全应急响应主要是为了让人们对网络安全…