C语言新手小白详细教程(7)指针和指针变量
希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~
阅读指南:
- 开篇说明
- 1、指针的定义
- 接下来我们用图示的形式来解释一下 指针:
- 2、申明指针变量
- 3、取地址符 &
- 4、为指针变量赋值
- 5、间接运算符
开篇说明
本章节我们学习C语言中一个非常重要的概念 指针。在之前的章节,我们已经接触过指针这个概念了,比如scanf()中的地址列表,这就是指针。所以,用一句话总结 指针是什么呢?指针就是地址!
1、指针的定义
指针:就是变量的内存地址。
指针变量就是存放内存地址的变量。(存放指针的变量)
从以上的定义我们可以知道,首先指针是一个值,这个值值指的是内存地址。而指针变量,和我们之前学过的int型、char型等变量类似,不同的点在于,指针变量存储的是内存地址(指针),int型变量存储的是整型数据,char型变量存储的是字符型数据。
接下来我们用图示的形式来解释一下 指针:
如图所示,int型变量i、j、k 大家肯定已经非常熟悉了。这里面的内存地址3020处存储的指针型变量i_pointe,上面提过,指针存储的是内存地址。i_pointer里存储的2000是一个内存地址,即变量i的地址。注意与变量k做区别。
2、申明指针变量
我们知道,申明一个变量需要指出这个变量的数据类型,比如int i;和char i;
同样,在声明指针变量时,也要明确这个指针变量里存储的是哪类型变量的地址。
申明格式:
数据类型 * 指针变量名称;
- 申明存储int型变量地址的指针变量
int * i_pointer;// i_porinter 是指向 int 型变量的指针
- 申明存储char型变量地址的指针变量
char * ch_pointer;// ch_porinter 是指向 char 型变量的指针
3、取地址符 &
我们记得我们在scanf()函数中提到过的取地址符&。
指针变量&i的值是变量i在内存中的地址,指针变量i_pointer的值也是变量i在内存中的地址,所以:
int * i_pointer;
i_pointer == &i;
4、为指针变量赋值
指针变量存储的是内存地址,那么给指针变量赋一个内存地址型的值即可
#include <stdio.h>
int main(){int i = 5;//定义整型变量ichar ch = 'A';//定义字符型变量chint * i_pointer;//定义整型指针变量i_pointerchar * ch_pointer;//定义字符型指针变量ch_pointeri_pointer = &i;//将i的地址赋值给i_pointerch_pointer = &ch;//将ch的地址赋值给ch_pointerprintf("i的值为:%d\n", i);printf("i的地址为:%p\n", i_pointer);//输出i_pointer的地址printf("i的值为:%d\n", &i);printf("ch的值为:%c\n", ch);printf("ch的地址为:%p\n", ch_pointer);printf("ch的值为:%p\n", &ch);
return 0;
}
输出结果

5、间接运算符
我如果想给变量i赋值,内存地址为2000这个地方存储数值30,可以用两种做法:
- 变量i等于3;直接给变量i赋值。
- 内存为2000的这个地址里存储的数值为30;通过地址赋值。
第二种方式如何用C语言表示呢?
int i; int i_pointer; i_pointer = &i; i = 30; *i_pointer = 30;// *i_pointer 等价于 i;
- 我们看到,在i_pointer的前面有一个星号“*”,这个星号叫间接运算符
第二种方法的目的是,通过指针变量i_pointer找到i的地址,然后再将值放入地址中,其中 *i_pointer就是这个效果。
当计算机看到i_pointer后,知道这是一个指针变量,存储的是一个内存地址,之后看到 i_pointer前面的星号 * ,会顺着 i_pointer
这个指针变量中存储的地址(指针)到对应位置,然后将值30放入。 - 从另一种角度看,int型变量i等价于指针变量 i_pointer.他俩存在等价关系。
- *即i等价于 i_pointer
意气风发,漫卷疏狂
学习是成长的阶梯,每一次`的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!
愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
我是意疏 下次见!
相关文章:
C语言新手小白详细教程(7)指针和指针变量
希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 关注 收藏支持一下笔者吧~ 阅读指南: 开篇说明1、指针的定义接下来我们用图示的形式来解释一下 指针:2、申明指针变量3、取地址符 &4、为指针…...
Kafka保证消息不丢失
Kafka保证消息不丢失 生产者发送消息到Broker丢失 设置异步发送 回调方法中的参数Exception e如果为空 代表发送成功,如果不为空代表发送失败出现异常 消息在Broker中丢失 kafka集群中存在分区机制 分区中分为leader和follower副本 leader负责读写,而follower只负责数据…...
数据结构+基数排序算法
一、问题描述 实现英文单词按字典序排列的基数排序算法 编写一个程序,采用基数排序方法将一组英文单词按字典顺序排 列。假设单词均由小写字母或空格构成,最长的单词有 MaxLen 个 字母,用相关数据进行测试并输出各趟的排序结果。 用例&#…...
C++ list【常用接口、模拟实现等】
1. list的介绍及使用 1.1 list的介绍 1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前…...
12.面试题——Spring Boot
1.Spring Boot是什么? Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。 2.为什么要用 …...
【前端VUE】npm i 出现版本错误等报错 简单直接解决命令
前端vue npm i 安装时出现 报错原因 在新版本的npm中,默认情况下,npm install遇到冲突的peerDependencies时将失败。 解决办法 使用--force或--legacy-peer-deps可解决这种情况。 --force 会无视冲突,并强制获取远端npm库资源࿰…...
精彩回顾 | 风丘科技亮相2024名古屋汽车工程博览会
2024年7月17日-19日,风丘科技联合德国IPETRONIK亮相日本名古屋汽车工程博览会。该展会面向汽车行业不同应用场景,包括新的eAxle、FCEV、ADAS、测试测量系统和ECU测试等相关技术,是一个专为活跃在汽车行业前线的工程师和研究人员举办的汽车技术…...
设计模式21-组合模式
设计模式21-组合模式(Composite Pattern) 写在前面 动机定义与结构定义结构主要类及其关系 C代码推导优缺点应用场景总结补充叶子节点不重载这三个方法叶子节点重载这三个方法结论 写在前面 数据结构模式 常常有一些组件在内部具有特定的数据结构。如何…...
如何选择深度学习的损失函数和激活函数
一概述 在深度学习中,损失函数(Loss Function)和激活函数(Activation Function)是两个至关重要的组件,它们共同影响着模型的训练效果和泛化能力。本文将简要介绍这两个概念,阐述选择它们的重要性…...
DATAX自定义KafkaWriter
因为datax目前不支持写入数据到kafka中,因此本文主要介绍如何基于DataX自定义KafkaWriter,用来同步数据到kafka中。本文偏向实战,datax插件开发理论宝典请参考官方文档: https://github.com/alibaba/DataX/blob/master/dataxPlug…...
Mybatis分页多表多条件查询
个人总结三种方式: Xml、queryWrapper、PageHelper第三方组件这三种方式进行查询; 方式一: xml中联表查询,在mapper中传参IPage<T>和条件Map(这里用map装参数)。 代码示例: Mapper层 M…...
SpringBoot快速入门(手动创建)
目录 案例:需求 步骤 1 创建Maven项目 2 导入SpringBoot起步依赖 3 定义Controller 4 编写引导类 案例:需求 搭建简单的SpringBoot工程,创建hello的类定义h1的方法,返回Hello SpringBoot! 步骤 1 创建Maven项目 大家&…...
C 408—《数据结构》算法题基础篇—数组(通俗易懂)
目录 Δ前言 一、数组的合并 0.题目: 1.算法设计思想: 2.C语言描述: 3.算法的时间和空间复杂度 : 二、数组元素的倒置 0.题目 : 1.算法设计思想 : 2.C语言描述 : 3.算法的时间和空间复杂度 : 三、数组中特定值元素的删除 0.题目 : …...
AI秘境-墨小黑奇遇记 - 初体验(一)
“怎么可能!”墨小黑盯着屏幕上的代码,整个人都不好了。调试了三遍,翻了几遍书,结果还是不对。就像你以为自己早起赶车,结果发现闹钟根本没响一样崩溃。 这是他第一次真正接触人工智能实战任务——实现一个简单的感知…...
文件IO813
标准IO文件定位: fseek函数: 功能:将stream流文件中的文件指针从whence位置开始偏移offset个字节的长度。 int fseek(FILE *stream , long offset, int whence); FILE *stream 指的是所需要定位的文件(文化定位前提是文件要被打…...
STP(生成树)的概述和工作原理
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…...
从AGV到立库,物流自动化的更迭与未来
AGV叉车 随着柔性制造系统的广泛应用,小批量、多批次的生产需求不断增强,“订单导向”生产已经成为趋势。这也让越来越多的企业认识到,产线的智能设备导入只是第一步,要想达到生产效率的最优解,物流系统的再优化必须提…...
阴阳脚数码管
1.小故事 最近,我接到了一个既“清肺”又“烧脑”的新任务,设计一个低功耗蓝牙肺活量计。在这个项目中我们借鉴了一款蓝牙跳绳的硬件设计方案,特别是它的显示方案——数码管。 在电子工程领域,初学者往往从操作LED开始ÿ…...
【Vue3-Typescript】<script setup lang=“ts“> 使用 ref标签 怎么获取 refs子组件呢
注意:请确保子组件已经正确挂载,并且通过 defineExpose 暴露了您想要在父组件中访问的属性或方法 parent.vue <template><child ref"childRef"></child><button click"fun">点击父组件</button> &l…...
npm 超详细使用教程
文章目录 一、简介二、npm安装三、npm 的使用3.1 npm初始化项目3.2 安装包3.3 安装不同版本包3.4 避免系统权限3.5 更新包3.6 卸载包3.7 执行脚本3.8 pre- 和 post- 脚本3.9 npm link3.10 发布和卸载发布的包3.11 使用npm版本控制3.22 npm资源 四、总结 一、简介 npmÿ…...
Phi-4-mini-reasoning推理质量评估:GSM8K/MATH数据集本地测试方法
Phi-4-mini-reasoning推理质量评估:GSM8K/MATH数据集本地测试方法 1. 模型简介 Phi-4-mini-reasoning是一个轻量级开源模型,专注于高质量数学推理任务。作为Phi-4模型家族的一员,它通过合成数据训练和微调,特别擅长解决需要密集…...
opencode令牌分析插件使用:API调用监控部署教程
opencode令牌分析插件使用:API调用监控部署教程 1. 引言:为什么需要API调用监控? 当你使用AI编程助手时,是否曾经遇到过这些问题:不知道模型调用了多少次API、不清楚每次调用消耗了多少token、无法监控API调用的性能…...
ECDH算法避坑指南:OpenSSL和Node.js中的椭圆曲线参数选择
ECDH算法实战避坑指南:跨平台椭圆曲线参数选择与性能优化 在构建现代加密通信系统时,ECDH(椭圆曲线迪菲-赫尔曼密钥交换)算法因其高效性和安全性已成为TLS协议栈的核心组件。然而,当开发者需要在OpenSSL和Node.js等不同…...
三次握手,四次挥手速记版
本文同步发表于微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新 三次握手和四次挥手是 TCP 协议中建立与关闭连接的关键机制,常因流程抽象而难以记忆。结合权威资料和通俗类比,以下是清晰、易记的要点&#…...
用Multisim复刻经典:手把手教你搭建一个带分数显示的四人抢答器(附仿真文件)
用Multisim复刻经典:手把手教你搭建一个带分数显示的四人抢答器(附仿真文件) 在电子工程的学习和实践中,没有什么比亲手搭建一个完整的数字电路系统更能让人兴奋的了。尤其是对于那些对经典74系列芯片情有独钟的工程师和爱好者来说…...
Claude 源码泄露事件深度分析:一场“打包错误“引发的行业地震
卷卷 | 2026年4月1日一句话结论一周之内,Anthropic 连续两次泄露:先是有近 3,000 份内部文件(含未发布模型 Claude Mythos 的详细信息)被公开暴露;后是 Claude Code v2.1.88 的 npm 包中意外包含了完整源码的 source m…...
曾经我和大模型交流业务实现记录
第一次: 我有一组子组件11个,通过子组件的不同组合,可以组成表单,这些表单让不同的用户使用,表单组成公共的内容,让大部分用户使用,当然用户可以在这些表单的基础上修改一些默认值,变…...
RT thread—iic—at24c04读写操作
at24c04介绍:存储容量:4 Kbits(即 512 字节)。内部结构为 32 页,每页 16 字节。地址0x000-0x1FF通信接口:标准 I2C(时钟线 SCL 和数据线 SDA),支持最高 400 kHz 的快速模…...
Python入门第6章:字典(键值对数据结构)
Python入门第6章:字典(键值对数据结构) 大家好,欢迎来到Python入门系列的第6章内容!在前5章里,我们学会了变量、数据类型、运算符、if语句等基础知识点,也接触了列表、元组这两种序列数据结构—…...
2026年4月OpenClaw如何安装?腾讯云2分钟零基础教程及百炼APIKey配置方法
2026年4月OpenClaw如何安装?腾讯云2分钟零基础教程及百炼APIKey配置方法。OpenClaw(原Clawdbot)作为2026年主流的AI自动化助理平台,可通过阿里云轻量服务器实现724小时稳定运行,并快速接入钉钉,让AI在企业群…...

