C语言——指针(一)
📝前言
这篇文章主要带大家初步认识一下指针,供大家理解参考。
主要归纳与讲解:
1,指针与指针变量
2,指针的基本使用(如何定义,初始化,引用)
🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:雄鹰不为暴风折翼,狼群不因长夜畏惧
文章目录
- 一,指针与指针变量
- 1,地址
- 2,指针
- 3,指针变量
- 二,指针变量的基本使用
- 1,指针变量的定义
- 4,指针变量的大小
- 2,指针变量的初始化
- 3,指针变量的引用
- 4,解引用操作符(“ * ”)
一,指针与指针变量
相信大家在学习C语言的时候常常听到别人提起地址和指针,那究竟什么是地址?什么是指针?什么又是指针变量?
1,地址
●拿学校举例:
学校建成时就有很多宿舍,为了区分不同的宿舍,每个宿舍都有自己独有的门牌号,当学校来了新同学时,学校就会给同学分配宿舍,而宿舍的门牌号就代表了同学居住的地址。
●C语言中的地址也是这样:
计算机的内存有很多储存单元,为了区分这些储存单元,计算机的操作系统就给每个储存单元都分配了自己唯一的编号,当我们在C语言中定义变量的时候,编译器就会给变量分配储存空间,这个储存空间的编号就是存放变量的地址。
2,指针
C语言把数据储存的起始地址称为指针。
简单来说:“指针”不过是C语言中对地址的一个新描述,新名字。
其实就是:储存单元的编号 == 地址 == 指针
3,指针变量
指针变量就是一种用来存放指针的变量。
就像存放数字的变量我们称为整型变量,那么存放指针的变量,我们就成为指针变量。
例如:
int a = 1; //我们把1赋值给变量a, a是整型变量
int* ptr = &a; //我们把a的地址赋值给ptr, ptr是指针变量
二,指针变量的基本使用
1,指针变量的定义
定义格式:
int *p1; //定义了指向整型的指针变量,指针变量的类型是:int*
float *p2; //定义了指向浮点型的指针变量,指针变量的类型是:float*
char *p3; //定义了指向字符型的指针变量,指针变量的类型是:char*
这里的“*” 是一个标识符,其含义是:代表了变量的类型是指针类型。
这的 int/float/char 指的是指针所指向的数据的类型。
指针变量也有不同的类型:把指针名字去掉,就是指针变量对应的类型。
我们如何理解指针变量的类型呢?
因为不同类型的变量所占用的内存的空间大小不同,因此指针变量前面的数据类型表示:保存的地址是对应数据类型的变量的指针
从语法上看,我们只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。
例如:
int *p1; //指p1存放的是一个存放整型数的起始地址。
float *p2; //指p2存放的是一个存放浮点数的起始地址。
char *p3; //指p3存放的是一个存放字符型数据的起始地址。
如图:

4,指针变量的大小
我们都知道变量类型的大小与放什么内容有关
比如:
int类型放的是数字,大小是4字节。
char类型放的是字符,大小是1个字节。
那么指针变量的大小也就取决于放一个地址需要多大的空间
计算机决定的:
在32位机器上,存放一个地址要32个bit位,那么,在**32位机器上,一个地址的大小就是4个字节,指针变量的大小也就是4个字节。
在64位机器上,存放一个地址要64个bit位,那么,在64位机器**上,一个地址的大小就是8个字节,指针变量的大小也就是8个字节。
2,指针变量的初始化
指针变量可以在声明时或者在赋值语句中初始化。可以被初始化为0,NULL或者普通变量的地址。
NULL的指针不指向任何数据,也被称为“空指针”,表示数值0。
初始化如下:
int m = 3;
int *p1 = &m; //用普通整型变量m的指针初始化
double *p2 = 0; //p2指针变量不指向任何浮点数
int *p3 = NULL; //p3指针变量不指向任何整型数
当我们不初始化指针变量时,指针变量的值是随机的。
●注意:
1,尽可能使指针初始化,以防止指针指向一个未知的或者未被初始化的内存空间,变成野指针。
2,除了0以外,不能用其他具体的数字直接赋值给指针变量。
3,指针变量的引用
指针变量和其他变量相似,都可以进行赋值和取值操作。
例如:
int m = 3;
double f = 4.5;
char ch = 'a';
//主要说明一下下面几句代码
int *p1 = &m;
double *p2 = &f;
char *p3 = &ch
int *p = p1
①p1=&m 表示:将m的地址赋值给p1,此时p1就指向m。
②p2=&f 表示:将f的地址赋值给p2,此时p2指向f。
③p3=&ch 与前两句同理,即p3指向ch。
④p=p1 表示:将变量p1中的指针赋值到p变量中,此时p也指向了m储存单元。
如图:

4,解引用操作符(“ * ”)
作用是:取出指针变量所指向的内存单元中的值
下面我们在代码中理解,如:
(1)
int a = 100;
int* pa = &a;
*pa = 0;
*pa=0的作用是:把a的值改成了0,在这里(*pa)的意思是通过pa中存放的地址,找到指向的空间 (其实就是a)
(2)
int p,m;
scanf("%d",&m);
p = &m;
printf("%d %d\n",m, *p);
printf("%x",p);
程序的输出结果:
输入:3
输出:3 3 //这里打印的是 m 和(p)的值
22ff40 // 这里打印出的是 p中的指针,不同的计算机可能值不同
不难发现,m 与p的结果是相同的,即 * 的作用就是:通过p中存放的m的地址,找到m。
————————————————————————————————
🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!最后,☺祝愿大家天天开心!!!
相关文章:
C语言——指针(一)
📝前言 这篇文章主要带大家初步认识一下指针,供大家理解参考。 主要归纳与讲解: 1,指针与指针变量 2,指针的基本使用(如何定义,初始化,引用) 🎬个人简介&…...
学习量化交易如何入门?
Python 量化入门很简单,只需 3 步就能快速上手! 题主在程序方向没有相关经验,今天就从量化行业的通用语言-Python 着手,教大家如何快速入门。 一、准备工作 在开始 Python 编程之前,首先需要确保你的计算机上安装了合适的 Pytho…...
CSS3动画
在CSS3中新增了一个很有意思的东西,那就是动画,有了动画我们可以做很多的事情,让我为大家介绍一下动画吧! 本篇文章关于介绍动画,利用小球移动为你们介绍一下动画 默认样式: <!DOCTYPE html> <ht…...
黑马点评-10实现用户点赞和点赞排行榜功能
用户点赞功能 如果用户只要点赞一次就对数据库中blog表中的liked字段的值加1就会导致一个用户无限点赞 PutMapping("/like/{id}") public Result likeBlog(PathVariable("id") Long id) {// 修改点赞数量,update tb_blog set liked liked 1 where id …...
Spring配置其他注解Spring注解的解析原理
Spring配置其他注解 Primary注解用于标注相同类型的Bean优先被使用权,Primary是Spring 3.0引入的,与Component和Bean一起使用,标注该Bean的优先级更高,则在通过类型获取Bean或通过Autowired根据类型进行注入时,会选用优…...
TypeScript 学习笔记 第一部分 语法基础
【视频链接】尚硅谷TypeScript教程(李立超老师TS新课) TypeScript 1. 类型1.1 | 联合类型1.2 字面量类型1.3 any 任意类型1.4 unkown 类型1.5 as 类型断言1.6 object 对象类型1.7 { } 对象类型1.8 ? 对象中的可选属性1.9 对象中的任意属性1.1…...
【element优化经验】怎么让element-ui中表单多语言切换排版不乱
目录 前言: 痛点: 1.左对齐,右对齐在中文和外语情况下字数不同,固定宽度会使名称换行,不在整行对齐,影响美观。 2.如果名称和输入框不在一行,会使页面越来越长 3.label-width值给变量&#…...
软件设计中如何画各类图之一实体关系图(ER图):数据库设计与分析的核心工具
目录 1 前言2 符号及作用:3 绘制清晰的ER图步骤4 实体关系图的用途5 使用场景6 实际应用场景举例7 结语 1 前言 当谈到数据库设计与分析的核心工具时,实体关系图(ER图)无疑是其中最重要的一环。在软件开发、信息管理以及数据库设…...
【神印王座】龙皓晨美妆胜过月夜,魔神皇识破无视,撮合月夜阿宝
Hello,小伙伴们,我是拾荒君。 《神印王座》国漫第82集已更新,拾荒君和大多数人一样,更新就去看了。魔神皇枫秀,威严凛然,突然空降月魔宫,整个宫殿都在这股无与伦比的强大气息中颤栗。为了顺利躲避魔神皇的…...
汽车级全保护型六路半桥驱动器NCV7708FDWR2G 原理、参数及应用
NCV7708FDWR2G 是一款全保护型六路半桥驱动器,特别适用于汽车和工业运动控制应用。六个高压侧和低压侧驱动器可自由配置,也可单独控制。因此可实现高压侧、低压侧和 H 桥控制。H 桥控制提供正向、逆向、制动和高阻抗状态。驱动器通过标准 SPI 接口进行控…...
【小技巧】MyBatis 中 SQL 写法技巧小总结
最近有个兄弟在搞mybatis,问我怎么写sql ,说简单一点mybatis就是写原生sql,官方都说了 mybatis 的动态sql语句是基于 OGNL表达式的。可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: if 语句 (简单的条件…...
C#编程题分享(4)
换行输出整数问题 输⼊任意⼀个位数未知的整数,输出这个数每⼀位上的数字。输出的时候,从个位开始输出,每输出⼀个数字换⼀⾏。样例输⼊:3547 输出:7 换行输出 4 换行输出5 换行输出3 int n Convert.ToInt32(Conso…...
CTF靶场搭建及Web赛题制作与终端docker环境部署
♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ 写在前面 ╔═══════════════════════════════════════════════════…...
nodejs express vue uniapp新闻发布系统源码
开发技术: node.js,mysql5.7,vscode,HBuilder nodejs express vue uniapp 功能介绍: 用户端: 登录注册 首页显示搜索新闻,新闻分类,新闻列表 点击新闻进入新闻详情࿰…...
FastText模型文本分类
项目地址:NLP-Application-and-Practice/07_FastText/7.2-FastText文本分类/text_classification at master zz-zik/NLP-Application-and-Practice (github.com) 加载数据 load_data.py # coding: UTF-8 import os import pickle as pkl from tqdm import tqdmMA…...
CentOS 7 使用Fmt库
安装 fmt Git下载地址:https://github.com/fmtlib/fmt 步骤1:首先,你需要下载fmt的源代码。你可以从https://github.com/fmtlib/fmt或者源代码官方网站下载。并上传至/usr/local/source_code/ 步骤2:下载完成后ÿ…...
如何通过宝塔面板搭建一个本地MySQL数据库服务并实现远程访问
宝塔安装MySQL数据库,并内网穿透实现公网远程访问 文章目录 宝塔安装MySQL数据库,并内网穿透实现公网远程访问前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网…...
普通话考试相关(一文读懂)
文章目录: 一:相关常识 1.考试报名时间 2.报名地方 费用 证件 3.考试流程 4.普通话等级说明 二:题型 三:技巧 1.前三题 2.命题说话 四:普通话考试题库 1.在线题库 2.下载题库 一:相关常识 …...
深度学习动物识别 - 卷积神经网络 机器视觉 图像识别 计算机竞赛
文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…...
【Redisson】基于自定义注解的Redisson分布式锁实现
前言 在项目中,经常需要使用Redisson分布式锁来保证并发操作的安全性。在未引入基于注解的分布式锁之前,我们需要手动编写获取锁、判断锁、释放锁的逻辑,导致代码重复且冗长。为了简化这一过程,我们引入了基于注解的分布式锁&…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
