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

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

3天内不再提示

嵌入式开发之C语言的指针

电子工程师 来源:未知 作者:胡薇 2018-11-06 17:09 次阅读

指针是C 语言的特色,使其更灵活。

C语言编程中善用指针可以简化一些任务的处理,而对于一些任务(比如动态内存分配),必须要有指针才行的。也就是说精通C指针编程是很有必要的,帮助你成为一名优秀的Cer。

每个变量有其对应的内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。

下面是一个输出定义的变量地址的实例:

编译和执行,产生下列结果:

var1 变量的地址:0x7fff5cc109d4var2 变量的地址:0x7fff5cc109de

什么是指针?

写了上面的代码之后,再来了解下什么是指针。

实际上指针也是变量,其中存放了其他变量的地址。就像其他变量或常量一样,使用之前要先声明。指针声明形式:

type *var-name;

type是指针的基类型,必须为有效的C语言数据类型,var-name是指针变量名。"*"用来声明这是指针变量。以下都是有效的指针声明形式:

int *ip; /* 一个整型的指针 */

double *dp; /* 一个 double 型的指针 */

float *fp; /* 一个浮点型的指针 */

char *ch; /* 一个字符型的指针 */

指针所指向的变量或常量的数据类型不同,但是,所有指针的值都是一个代表内存地址的十六进制数。

指针的使用

使用指针的基本操作:

定义一个指针变量

把变量地址赋值给指针

访问指针变量中可用地址的值

这些是通过使用一元运算符“*”来返回位于操作数所指定地址的变量的值。

下面是指针应用的实例:

当代码被编译、执行,产生结果如下:

Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable:20

C语言中的NULL指针

在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。

NULL 指针是一个定义在标准库中的值为零的常量。请看下面的程序:

当上面的代码被编译和执行时,它会产生下列结果:

ptr 的地址是0x0

在大多数的操作系统上,程序不允许访问地址为 0 的内存,因为该内存是操作系统保留的。然而,内存地址 0 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。但按照惯例,如果指针包含空值(零值),则假定它不指向任何东西。

如需检查一个空指针,您可以使用 if 语句,如下所示:

if(ptr) /* 如果 p 非空,则完成 */

if(!ptr) /* 如果 p 为空,则完成 */

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136053
  • 指针
    +关注

    关注

    1

    文章

    478

    浏览量

    70499

原文标题:C语言的指针

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式开发中为什么选择C++语言

    一、C++概述1.嵌入式开发中为什么选择C++语言?(1)面向过程编程的特点C语言特点:
    发表于 10-27 08:25

    为什么嵌入式开发要使用C语言

    ID:技术让梦想更伟大作者:李肖遥对于现在我们从事嵌入式开发的人员来说,C语言好像是必备的技能,也是最常见的开发语言.但是我们有没有想过为什
    发表于 11-05 08:45

    嵌入式开发为什么选择C语言?

    1、嵌入式开发为什么选择C语言?(面试题!!!)嵌入式开发中操作系统是核心,需要移植,并在上层和底层做开发,而操作系统的核心是内核,所有内核
    发表于 12-15 07:45

    嵌入式开发语言有哪些_最全面嵌入式开发语言概述

    嵌入式开发语言有哪些?嵌入式开发的入门门槛还是比较高的,不仅要懂较底层软件,对软件专业水平要求较高,而且必须懂得硬件的工作原理,嵌入式系统应用越来越广泛,目前,在
    发表于 01-29 14:47 9765次阅读
    <b class='flag-5'>嵌入式开发</b><b class='flag-5'>语言</b>有哪些_最全面<b class='flag-5'>嵌入式开发</b><b class='flag-5'>语言</b>概述

    嵌入式开发通常采用哪种编程语言

    目前在嵌入式开发领域比较常见的编程语言C,另外C++、Python、JavaScript等语言也可以进行
    发表于 06-18 16:59 1.6w次阅读

    嵌入式系统为什么选择C语言作为开发语言

    了解嵌入式开发的朋友们都非常的清楚其核心的开发语言C语言C
    发表于 07-10 17:01 2023次阅读

    什么是嵌入式开发?为什么用C语言作为开发语言

    内部做开发的,而操作系统所有的内核都是C语言所编写的,所以说在嵌入式开发的过程中也选择C语言,肯
    发表于 11-02 18:50 12次下载
    什么是<b class='flag-5'>嵌入式开发</b>?为什么用<b class='flag-5'>C</b><b class='flag-5'>语言</b>作为<b class='flag-5'>开发</b><b class='flag-5'>语言</b>?

    嵌入式开发为什么不选择汇编、Java而是C语言呢?

    ID:技术让梦想更伟大作者:李肖遥对于现在我们从事嵌入式开发的人员来说,C语言好像是必备的技能,也是最常见的开发语言.但是我们有没有想过为什
    发表于 11-02 19:21 45次下载
    <b class='flag-5'>嵌入式开发</b>为什么不选择汇编、Java而是<b class='flag-5'>C</b><b class='flag-5'>语言</b>呢?

    嵌入式开发为什么选择C语言作为开发语言

    了解嵌入式开发的朋友们都非常的清楚其核心的开发语言C语言C
    发表于 11-03 09:21 17次下载
    <b class='flag-5'>嵌入式开发</b>为什么选择<b class='flag-5'>C</b><b class='flag-5'>语言</b>作为<b class='flag-5'>开发</b><b class='flag-5'>语言</b>?

    VScode嵌入式开发入门教程

    VScode嵌入式开发入门教程1.VScode进行单片机嵌入式开发教程2.单片机开发环境的搭建3.相关技巧与设置
    发表于 11-03 09:51 44次下载
    VScode<b class='flag-5'>嵌入式开发</b><b class='flag-5'>之</b>入门教程

    VScode嵌入式开发ESP32以及ESP8266入门

    VScode嵌入式开发ESP32以及ESP8266入门1.适用与有部分C语言开发者或者学生学习ESP系列的
    发表于 11-03 12:51 29次下载
    VScode<b class='flag-5'>嵌入式开发</b><b class='flag-5'>之</b>ESP32以及ESP8266入门

    嵌入式为什么选择C语言作为开发语言

    了解嵌入式开发的朋友们都非常的清楚其核心的开发语言C语言C
    发表于 11-03 14:06 15次下载
    <b class='flag-5'>嵌入式</b>为什么选择<b class='flag-5'>C</b><b class='flag-5'>语言</b>作为<b class='flag-5'>开发</b><b class='flag-5'>语言</b>?

    嵌入式开发中为什么选择C语言?它有哪些特点?

    众所周知,C语言嵌入式开发中占据着十分重要的地位,为什么嵌入式开发要选择C语言
    的头像 发表于 01-04 09:56 1186次阅读
    <b class='flag-5'>嵌入式开发</b>中为什么选择<b class='flag-5'>C</b><b class='flag-5'>语言</b>?它有哪些特点?

    c语言嵌入式开发

    电子发烧友网站提供《c语言嵌入式开发.zip》资料免费下载
    发表于 11-17 14:11 2次下载
    <b class='flag-5'>c</b><b class='flag-5'>语言</b><b class='flag-5'>嵌入式开发</b>

    嵌入式C语言的结构特点

    嵌入式开发中既有底层硬件的开发又涉及上层应用的开发,即涉及系统的硬件和软件,C语言既具有汇编语言
    的头像 发表于 11-24 16:16 633次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>语言</b>的结构特点