C语言天花板——指针(初阶)
🌠🌠🌠
大家在刚刚接触C语言的时候就肯定听说过,指针的重要性以及难度等级,以至于经常“谈虎色变”,但是今天我来带大家走进指针的奇妙世界。🎇🎇🎇
一、什么是指针🤔
指针理解的两个要点:
1️⃣指针是内存中一个最小单元的编号,也就是地址
2️⃣平常口语中说的指针,通常指的是指针变量,是用来存放地址的变量
数据存储在内存中,是以二进制的方式进行存储的,每一个二进制找到它对应的地址存储起来
例如这样的一个整型变量a,在内存中他的存储方式就是:
我们可以看到这样一个一个的格子,这一个格子便是我们的内存单元,单位是字节,上面代码中的整型变量a,就占四个字节,也就是图中红色区域开辟的空间,里面存的就是变量a。 🎊🎊🎊
🥳🥳🥳 🥳🥳🥳 单元编号 == 地址 == C语言中的“指针”
二、指针类型 🤔
同数据类型一样,指针也分各种类型,如图:
值得注意的是指针大小是固定的,在32位的环境下占4位,64位的环境下占8位
那么在抛出一个问题,既然所占字节大小都一样为什么还要区分指针类型呢?
指针类型有意义么?🤔🤔🤔
1️⃣指针类型决定了在解引用操作的时候,访问了几个字节
在int类型的指针中,解引用会访问4个字节
在char类型的指针中,解引用只会访问1个字节
2️⃣指针类型决定了指针在+1/-1跳过了几个字节
三、野指针🤔
概念:指针指向的位置是不可知,不确定的,随机的。
野指针成因:
1️⃣指针未初始化
2️⃣指针越界访问
3️⃣ 指针指向的空间释放
如何规避野指针:
🎇指针初始化
🎇避免指针越界
🎇指针指向的空间释放,指针及时置NULL
🎇避免返回局部变量的地址
🎇指针使用之前检查其有效性
四、指针运算🤔
1️⃣整数加减整数
指针+-整数->实际上是移动了一个指针类型的大小,而指针大小一般是4/8个字节
int main(){int arr[] = { 10,9,8,7,6,5,4,3,2,1 }int* p = arr;p++; return 0; }
2️⃣指针-指针
前提:两个指针指向的是同一块区域,指针类型是相同的
int main() {int arr[10] = { 0 };//指针-指针的前提:两个指针指向同一块区域,指针类型时相同的//指针-指针差值的绝对值,指针和指针之间的元素个数printf("%d\n", &arr[9] - &arr[0]);printf("%d\n", &arr[0] - &arr[9]);return 0; }
结论:指针-指针得到的差值的绝对值是指针与指针之间的元素个数
五、二级指针🤔
概念:二级指针变量是存放一级指针变量的地址的
int main() {int a = 10;int* p = &a;//p是指针变量,一级指针变量int** pp = &p;//pp指针变量,二级指针变量//int** * ppp = &pp;//pp是指针变量,三级指针变量//......return 0; }
其实指针不止有一级指针和二级指针,还有三级四级甚至是多级,但是我们在正常情况下很少可以用到。
六、指针数组🤔
指针数组是指针还是数组?🤔
答案:是数组,是存放指针的数组🛹🛹🛹
字符数组:存放字符的数组
整型数组:存放整形的数组
指针数组:存放指针(地址)的数组
int main() {int arr1[] = { 1,2,3,4,5 };int arr2[] = { 2,3,4,5,6 };int arr3[] = { 3,4,5,6,7 };//指针数组int* arr[] = { arr1,arr2,arr3 };return 0; }
注意:(数组名可以表示首元素的地址)
今天我们的指针就讲到这里,之后我还会更新一些更高阶的指针,感谢大家的支持!!!
相关文章:

C语言天花板——指针(初阶)
🌠🌠🌠 大家在刚刚接触C语言的时候就肯定听说过,指针的重要性以及难度等级,以至于经常“谈虎色变”,但是今天我来带大家走进指针的奇妙世界。🎇🎇🎇 一、什么是指针&…...

关于第一届全球电子纸创新应用金奖征集评选及报名指南
重要通知 |关于第一届全球电子纸创新应用金奖征集评选及报名指南https://mp.weixin.qq.com/s/RWsZtmJ20-NZXMG0k0rwPA?wxwork_useridEPIA 从2004年,Sony推出全球首款电纸书阅读器至今20载,这期间,到底诞生了多少种创新产品&#…...
idea搭建项目找不到Tomcat
idea搭建项目找不到Tomcat_idea没有tomcat配置项_ZYRL的博客-CSDN博客...

类和对象三大特性之继承
全文目录 继承的概念定义格式继承关系和访问限定符final 基类和派生类对象赋值转换继承中的作用域派生类的六个默认成员函数构造函数拷贝构造函数operator析构函数 友元和静态成员友元静态成员 各种继承形式菱形继承虚继承菱形虚拟继承对象模型 继承和组合 继承的概念 通过继承…...

Debian 12安装Docker
1.更新系统包 #apt update 2.安装依赖包 #apt install apt-transport-https ca-certificates curl gnupg lsb-release 3.添加Docker源 (1)添加Docker 官方GPG密钥 #curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/s…...

小谈设计模式(4)—单一职责原则
小谈设计模式(4)—单一职责原则 专栏介绍专栏地址专栏介绍 单一职责原则核心思想职责的划分单一变化原则高内聚性低耦合性核心总结 举例图书类(Book)用户类(User)图书管理类(Library)…...

ATF(TF-A) EL3 SPMC威胁模型-安全检测与评估
安全之安全(security)博客目录导读 ATF(TF-A) 威胁模型汇总 目录 一、简介 二、评估目标 1、数据流图 三、威胁分析 1、信任边界 2、资产 3、威胁代理 4、威胁类型 5、威胁评估 5.1 端点在直接请求/响应调用中模拟发送方FF-A ID 5.2 端点在直接请求/响应调用中模拟…...

AI绘画Stable Diffusion原理之扩散模型DDPM
前言 传送门: stable diffusion:Git|论文 stable-diffusion-webui:Git Google Colab Notebook部署stable-diffusion-webui:Git kaggle Notebook部署stable-diffusion-webui:Git AI绘画,输入一段…...

NSS [西湖论剑 2022]real_ez_node
NSS [西湖论剑 2022]real_ez_node 考点:ejs原型链污染、NodeJS 中 Unicode 字符损坏导致的 HTTP 拆分攻击。 开题。 附件start.sh。flag位置在根目录下/flag.txt app.js(这个没多大用) var createError require(http-errors); var express require(express); v…...

MySQL常用函数集锦 --- 字符串|数值|日期|流程函数总结
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、字符…...

GaussDB(DWS)云原生数仓技术解析:湖仓一体,体验与大数据互联互通
文章目录 前言一、关于数据仓库需求场景分类二、数据仓库线下部署场景2.1、线下部署场景介绍及优劣势说明2.2、线下部署场景对应的客户需求 三、数据仓库公有云部署场景3.1、公有云部署场景介绍及优劣势说明3.2、公有云部署场景对应的客户需求 四、为何重视数据共享(…...
Navicat历史版本下载及地址组成分析
下载地址组成 https://download3.navicat.com/download/navicat161_premium_cs_x64.exe 地址逻辑:前缀 版本 类型 语言 位数 前缀: http://download.navicat.com/download/navicat版本: 三位数,前两位是大版本,后一位是小版本ÿ…...

avue之动态切换表格样式问题
动态切换 a\b 两个表格 ,a表格高度变成b的高度等问题, 解决方案:...
彻底解决ruoyi分页后总数错误的问题
问题描述 最近时不时的发现用户列表出来的数据只有24条,但是总记录数却有58条,很奇怪。各种百度查询,都是什么修改查询分页改代码,尝试后发现还是没有效果,经过各种验证发现就是SQL语句错误。 如果非要说是SQL语句没…...

SpringMVC学习笔记——1
SpringMVC学习笔记——1 一、SpringMVC简介1.1、SpringMVC概述1.2、SpringMVC快速入门1.3、Controller中访问容器中的Bean1.4、SpringMVC关键组件的浅析 二、SpringMVC的请求处理2.1、请求映射路径配置2.2、请求数据的接收2.2.1、键值对方式接收数据2.2.2、封装JavaBean数据2.2…...

20230908_python练习_selenium模块爬取网页小说练习
霍比特人小说爬取,使用 selenium 模块调用谷歌浏览器,无界面模式爬取小说网站信息,将数据按照每次2000字符在mysql中保存。 # https://www.shukuai9.com/b/324694/ # 导入需要的库 from selenium import webdriver # 导入Keys模块ÿ…...

Python:安装Flask web框架hello world示例
安装easy_install pip install distribute 安装pip easy_install pip 安装 virtualenv pip install virtualenv 激活Flask pip install Flask 创建web页面demo.py from flask import Flask app Flask(__name__)app.route(/) def hello_world():return Hello World! 2023if _…...

深度解析NLP文本摘要技术:定义、应用与PyTorch实战
目录 1. 概述1.1 什么是文本摘要?1.2 为什么需要文本摘要? 2. 发展历程2.1 早期技术2.2 统计方法的崛起2.3 深度学习的应用2.4 文本摘要的演变趋势 3. 主要任务3.1 单文档摘要3.2 多文档摘要3.3 信息性摘要 vs. 背景摘要3.4 实时摘要 4. 主要类型4.1 抽取…...

zabbix监控多实例redis
Zabbix监控多实例Redis 软件名称软件版本Zabbix Server6.0.17Zabbix Agent5.4.1Redis6.2.10 Zabbix客户端配置 编辑自动发现脚本 vim /usr/local/zabbix/scripts/redis_discovery.sh #!/bin/bash #Fucation:redis low-level discovery #Script_name redis_discovery.sh red…...

win11将visual studio 2022的调试控制台改为windows terminal
一、前言 默认的调试控制台太丑了,字体也没有好看的,还是更喜欢windows terminal 二、修改 2.1 修改之前 2.2 修改步骤 打开windows terminal点这个向下的标志 选择settings按照下图1, 2, 3步骤依次操作即可 2.3 修改之后 总结 漂亮很多了...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...