学习C语言的指针

news2024/12/24 2:07:02

有一阵没更新了,因为最近比较繁忙,所以更新比较慢,还在慢慢学习

话不多说,开始今天的内容,聊一聊C语言指针。


很多小伙伴可能会被指针这个名字吓到,觉得很难,实际上确实有点难,但是想学就一定能学会。

一、关于指针的理解

指针,在我通俗的理解下就是指向一块儿空间的地址,给你设置的变量找了块儿地方存储数据,进了门,空间里面存放着你的变量值,假设当你设置一个变量值 a 的时候,我们的计算机会找一个地方,生成一个门牌号,开辟一块儿空间,当你写入 int a = 0 的时候,那块儿空间就会放入你的定义的值,画个图给大家理解:

然后再继续聊,那么计算机开辟的空间有多大,它根据什么来确定开辟空间的大小呢?

其实答案很简单,就是我们常用的那些变量类型如下:

int                4个字节

char             1个字节

double         8个字节

float             4个字节

short            2个字节

long             4个字节

......

所以空间大小是由变量类型决定的。 

 二、指针的基础运用

指针 = &变量

*指针 = 指针

PS:指针也是一种变量类型,一般是4个字节,其具体表现形式如下所示:

int *               4个字节

char *            1个字节

double *        8个字节

float *            4个字节

short  *          2个字节

long *            4个字节

......

如果我们想得到你写的变量 a 的地址,那么就需要用到取地址操作符 & ,举个简单的例子:

那么怎么用指针呢,在放个图片供大家理解: 

下面这张图说明本质上,指针就相当于是地址: 

下图是基本的一个指针访问数据: 

 

三、野指针

1. 对野指针的理解:

对我而言,野指针就像是开辟了一个空间,但是具体在哪开辟,我们是完全不知道的,全靠随机,就不太友好

2.为什么会产生这种现象呢?

  • 可能是因为指针没有初始化(没有初始化,指针为随机值)
  • 指针越界访问(就像给你一个数组,你访问了不存在数组里地址)
  • 指针指向的空间释放(多出现在函数运用,形参实参那里)

    我们写代码要注意以上三条问题,避免出错


今天分享就到这里啦,根据情况大家可以下来多找一些资料理解

永远不要停下脚步,慢一点也不要止步不前。

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

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

相关文章

算力云平台

先预热下 目标: 算力互联,随需随取;让算力化零为整,化整为零 场景: 1. 个人pc改造,个人算力出租,类似之前的jiluyou模式 2. 服务器中间商准系统集成,目前了解到挖矿不好弄了以后…

MVC架构简述

MVC简介 MVC 是一种非常常见且常用的分层架构,主要包括;M - mode 对象层,封装到 domain 里。V - view 展示层,但因为目前都是前后端分离的项目,几乎不会在后端项目里写 JSP 文件了。C - Controller 控制层&#xff0c…

qt安装历史版本5.15.2

0 背景 因为需要,所以需要安装qt5的最后一个版本qt5.15.2,但是下载qt安装器后,发现没有想要的版本。后面才发现,可以筛选历史版本进行安装。 1 解决 1,打开qt安装程序,勾选Archive后,点击筛选…

【简洁易学】TypeScript 学习笔记

文章目录 TypeScript学习笔记一、TS简介1. 学习前提2. TypeScript是什么?3. TypeScript增加了什么? 二、TS开发环境搭建1. 下载、安装Node.js2. npm安装TypeScript3. 创建一个TS文件,使用tsc对TS文件进行编译 三、TS的类型1. 类型声明2. 类型…

技术不爱听:可视化大屏难点不在于制作过程,而是做成什么样

制作可视化大屏的是一个技术活,需要掌握一定的前端技术和数据可视化技术,例如HTML、CSS、JavaScript、Canvas、SVG、three.js、甚至还涉及到建模、BIM、GIS等等。 但是,仅仅掌握这些技术并不足以制作出一个好的可视化大屏,更重要的…

js逆向进阶篇-某团酒店

提示!本文章仅供学习交流,严禁用于任何商业和非法用途,未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,如有侵权,可联系本文作者删除! 案例分析: 先来看看请求中有哪些参数是需要我们逆向,如下: mtgsig、fp、roh…

数据结构与算法-抽象数据类型ADT系列

以前在学习数据结构的时候做实验,老师要求用ADT抽象数据类型来写这些实现代码。后面也要复习数据结构,在这里就先放下链接。不过以前学习的时候使用的编程语言是C,里面会用到很多指针。现在编代码过程大多数时候都是用Java。不过思路应该还是…

C# WinForm —— 09 标签、文本框、按钮控件

标签 Label 一般显示不能编辑的文本或图像 常用属性、事件: 属性用途(Name)标签对象的ID,在代码里引用标签的时候会用到,一般以 lbl 开头Text设置或获取 界面上显示的 文本信息Image显示图像ImageList图像集,通常和 ListView ToolStrip Tre…

MS17-010---利用“永恒之蓝”漏洞攻击 win7主机

免责声明:本文仅做技术交流与学习.... 目录 一.前置知识 1.何为永恒之蓝? 2.什么是SMB协议? 3.SMB工作原理是什么? 二、实验环境 三、实验步骤 nmap扫描 msf一把梭哈 shell执行命令 远程连接 一. 二. 一.前…

C++常用的输入输出方法(ACM模式)

文章目录 前言一、输入输出方法1、cin2、getline()3、getchar() 二、算法案例1、一维数组1.1 输入固定长度1.2长度不固定 2、固定二维数组3、以非空格隔开的元素输入3、常见数据结构定义以及输入3.1 链表 前言 C中的输入输出函数有很多,我们本章只针对大部分算法题…

vue +antvX6 根据节点与线,动态设置节点坐标生成流程图

需求 vue2 antvX6完成流程图,但只有节点与线,没有节点的坐标,需要根据节点的顺序显示流程图。 需求: 1.根据数据动态生成对应的节点与线; 2.节点不能重叠; 3.节点与线可拖拽; 4.因为线存在重…

渗透之sql注入联合查询的注入

sql注入产生的原因: 由于程序过滤不严谨,导致用户有一些异常输入,最终触发数据库的查询。所以会出现sql注入这个问题。有些恶意的人就会利用这些信息导致数据库泄露。 注意:一般我们存在注入点我们会查询管理员的账号和密码&#…

【C 数据结构】深度优先搜索、广度优先搜索

文章目录 【 1. DFS 深度优先搜索 】1.1 基本原理1.2 C 实现 【 2. BFS 广度优先搜索 】2.1 基本原理2.2 C 实现 【 3. 深度优先生成树、广度优先生成树 】【 4. 深度优先生成森林、广度优先生成森林 】4.1 深度优先生成森林4.2 广度优先生成森林 对存储的图中的顶点进行遍历搜…

P6技巧-关于汇总项目Summarize的使用

前言 不知你在使用P6项目时是否察觉到这么一个有趣的现象,在打开一个项目(展开详细任务)时,在项目页签下可以看到该项目能反馈此时项目的总体进展及完成时间等内容,而当项目关闭时,其前面所展示的进展信息…

2.1.5 EtherChannel 简介

1、EtherChannel 简介 EtherChannel (以太网通道)是由 Cisco 公司开发的、应用于交换机之间的多链路捆绑技术。它的基本原理是将两台设备间多条以太网链路捆绑在一起组成一条逻辑链路,形成一个端口通道(PortChannel)&a…

selenium 4.x入门篇(环境搭建、八大元素定位)

背景 Web自动化测现状 1. 属于 E2E 测试 2. 过去通过点点点 3. 好的测试,还需要记录、调试网页的细节 一、selenium4.x环境搭建 一键搭建 pip3 install webdriver-helper 安装后自动的完成: 1. 查看浏览器的版本号 2. 查询操作系统的类型…

生活服务推出品牌实惠团购,覆盖五一假期“吃喝玩乐”多场景

4月26日,抖音生活服务平台上线“跟着大牌过五一”活动会场,携手22家连锁品牌商家,于“五一”前推出优价团购和时令新品,覆盖“吃喝玩乐”多重购物需求,助力假期消费。同时,伴随各地涌现的文旅热潮&#xff…

VUE的生命周期图和各函数

函数 beforeCreate(){ }, created(){ }, beforeMount(){ }, mounted(){ }, beforeUpdate(){ }, updated(){ }, beforeDestroy(){ }, destroyed(){ } 创建时生命周期图 运行时生命周期图

Linux vi\vim编辑器

vi/vim编辑器 一、vi\vim 编辑器的三种工作模式1.命令模式(Command mode)2.输入模式(Insert mode)3.底线命令模式(Last line mode) 二、参考 vi\vim 是 visual interface 的简称,是 Linux 中最经…

docker 虚拟化与docker的概念

一、云计算的三种服务模式 laas、pass、saas 1.1 IaaS: Infrastructure-as-a-Service(基础设施即服务) 第一层叫做IaaS,有时候也叫做Hardware-as-a-Service,几年前如果你想在办公室或者公司的网站上运行一些企业应用&#xff0c…