0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C程序设计基础-指针

汽车电子技术 来源:滑小稽笔记 作者:滑小稽 2023-03-02 10:11 次阅读

1、内存地址

用户在程序中定义了一个变量,对程序进行编译时,系统就会给这个变量分配内存单元,内存区的每一个字节都有一个编号,这就是内存地址,相当于旅馆的房间号,内存地址所表示的内存单元中存放的数据就相当于这个房间住的旅客,假设内存地址0x00000028中存放了一个字节的数据0x28,那么如果我找到了这个内存地址,也就相当于我查到了这里面的数据0x28,可以说地址指向该变量的单元,因此,将地址称为了指针,意思就是说通过它可以找到以它为地址的内存单元。

2、指针变量与指针

一个变量存放的地址就称为该变量的指针,如果有一个变量专门用来存放另一个变量的地址,那这个变量就称为指针变量,指针变量的值是地址。

3、指针变量的定义:通常在变量名前面加一个“*”就代表这是一个指针变量,如下图所示。

图片

9行和第10行都是定义了一个名为num的字符型指针变量,不过推荐使用第10行的定义方式,如果不进行地址初始化,就会成为所说的野指针(就是不知道指向哪个位置了)。

4、指针变量的赋值:指针变量的赋值如下图所示。

图片

首先定义了一个指针变量num,然后定义了一个变量a,并设置a的值为0xAA,现在将a的地址传给num,这就有了第11行的语句,其中&代表取址,即获取变量a所在的地址,此时可以将num指向的数据打印出来。

图片

此时程序的运行结果如下图所示。

图片

显然,此时指针变量指向的地址是007CF80B H,这个内存单元中存放的数据为100,就是变量a的初始值。

5、指针变量的使用

现在来进行一个实验,将变量a的值和变量b的值交换,程序如下图所示。

图片

程序运行结果如下图所示。

图片

现在思考这么一个问题,为什么交换两个数据要使用指针的方式呢,定义全局变量不是也可以达到这个效果吗?首先全局变量在编程的过程中要保证越少越好,因为全局变量的命名规则是不允许重复的,全局空间因为处于最顶层也是最大的命名空间里,所以变量名要保持独立,不冲突,就需要更完整的表达它的含义,所以名字就会更倾向于写的很长。全局变量数量越多,取名的难度就会更大,其次,有的时候全局变量太多会有一些莫名其妙的BUG,但是即想要少用全局变量,又要达到数据共享的目的要怎么办。

   这就有两种途径,一种是子函数的返回值,另一种就是指针,调用子函数的返回值会耗费掉一部分时间,这个时间在计算机编程中获取可以忽略不计,但是在后续的单片机编程中就会格外显眼,一般为了保证控制系统的实时性,一些重要的代码都会放在中断里执行,此时,只需要用指针指向对应的内存地址,需要的时候读一下即可,指针可以定义成局部指针变量,也就解决了全局变量过多的问题。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 指针
    +关注

    关注

    1

    文章

    473

    浏览量

    70363
  • 变量
    +关注

    关注

    0

    文章

    596

    浏览量

    28112
  • 地址
    +关注

    关注

    1

    文章

    31

    浏览量

    10606
收藏 人收藏

    评论

    相关推荐

    单片机原理及c语言程序设计

    0417、C语言程序设计及应用实例单片机的C语言应用程序设计 0413、单片机原理与应用及C51程序设计
    发表于 08-14 16:31

    C/ C++/ Java 程序设计经典教程》

    本帖最后由 圈圈7029 于 2014-11-13 11:41 编辑 《C/ C++/ Java 程序设计经典教程》(Deitel 著)●集作者几十年程序设计经验之精华,从软件工
    发表于 11-13 11:22

    c语言程序设计案例教程

    据类型和运算符、顺序程序设计、分支程序设计、循环结构、数组等。学习C语言一定要知道它的利器——指针。这正是C语言强大、高效和灵活的地方。如果
    发表于 07-20 07:25

    C++程序设计精简版

    指针第 7 章 自定义数据类型 第 3 篇 基于对象的程序设计第 8 章 类和对象第 9 章 关于类和对象的进一步讨论第 10 章 运算符重载 第 4 篇 面向对象的程序设计第 11 章 继承与派生第 12 章 多态性与虚
    发表于 10-09 07:26

    C程序设计概述 第一讲

    C程序设计概述 第一讲 学习要点:熟记C 语言的语法、句法学会算法分析与算法的设计本课重点:第 3 章~第6 章本课难点:第 4 章(函数)和第7 章(指针
    发表于 06-21 09:23 0次下载

    C程序设计实验指导书

    本书重点讲述了C语言程序设计以下几个方面的内容,包括顺序结构,选择结构,循环结构,数组,函数,指针以下结构体程序设计实习.
    发表于 06-21 09:38 0次下载

    C语言程序设计介绍

    包括:C 语言概述,算法基础,数据类型、运算符与表达式,顺序 结构程序设计,选择结构程序设计,循环结构程序设计,数组,函数,预处理命令,指针,结构体与共用 体,位运算,文件等。
    发表于 02-17 15:49 0次下载

    C程序设计的详细中文资料免费下载

    本文档的主要内容详细介绍的是C程序设计的详细中文资料免费下载内容包括了: 程序设计和C语言,算法---程序的灵魂,最简单的C程序设计,选择结构程序设
    发表于 08-01 08:00 0次下载

    C程序设计中的指针详细资料讲解免费下载

    C程序设计中使用指针可以: 1.使程序简洁、紧凑、高效2.有效地表示复杂的数据结构3.动态分配内存4.得到多于一个的函数返回值
    发表于 10-12 15:07 16次下载
    C<b class='flag-5'>程序设计</b>中的<b class='flag-5'>指针</b>详细资料讲解免费下载

    C语言程序设计教程之指针使用的课件免费下载

    本文档的主要内容详细介绍的是C语言程序设计教程之指针使用的课件免费下载指针使用主要内容 地址与指针指针变量的定义和使用,
    发表于 11-16 17:47 15次下载
    C语言<b class='flag-5'>程序设计</b>教程之<b class='flag-5'>指针</b>使用的课件免费下载

    C语言程序设计学习之数组中的指针资料说明

    C程序设计中使用指针可以:使程序简洁、紧凑、高效,有效地表示复杂的数据结构,动态分配内存,得到多于一个的函数返回值
    发表于 11-16 17:47 19次下载
    C语言<b class='flag-5'>程序设计</b>学习之数组中的<b class='flag-5'>指针</b>资料说明

    C++程序设计教程之指针的详细资料说明

    本文档详细介绍的是C++程序设计教程之指针的详细资料说明主要内容包括了:1. 指针的概念,2. 变量与指针,3. 数组与指针,4. 字符串与
    发表于 03-14 16:04 7次下载
    C++<b class='flag-5'>程序设计</b>教程之<b class='flag-5'>指针</b>的详细资料说明

    C语言指针用作函数参数模块化程序设计以及增量测试方法的程序

    本文档的主要内容详细介绍的是C语言指针用作函数参数模块化程序设计以及增量测试方法的程序
    发表于 12-25 08:00 1次下载
    C语言<b class='flag-5'>指针</b>用作函数参数模块化<b class='flag-5'>程序设计</b>以及增量测试方法的<b class='flag-5'>程序</b>

    面向对象与C++程序设计实验之封装性类与对象的资料说明

    学会运用对象数组、 对象指针、 this 指针、 对象作为函数参数、 友元 (friend )等特征进行程序设计
    发表于 06-09 08:00 7次下载
    面向对象与C++<b class='flag-5'>程序设计</b>实验之封装性类与对象的资料说明

    C语言程序设计全套培训课件免费下载

    ,第5章 选择结构程序设计,第6章 循环控制,第7章 数组,第8章 函数,第9章 预处理命令,第10章 指针,第11章 结构体与共用体,第12章 位运算,第13章 文件
    发表于 09-21 08:00 1次下载
    C语言<b class='flag-5'>程序设计</b>全套培训课件免费下载