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

    文章

    7513

    浏览量

    124098
  • 指针
    +关注

    关注

    1

    文章

    467

    浏览量

    70355

原文标题:C语言的指针

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

收藏 人收藏

    评论

    相关推荐

    [分享]如何进入嵌入式开发的世界?

    如何进入嵌入式开发的世界?我们认为,首先掌握C语言指针和内存管理等高级技术,然后掌握一些硬件知识,最后可以通过最容易找到的嵌入式Linux
    发表于 05-22 11:03

    大学生应该如何学习嵌入式开发

    语言基础,操作系统,数据结构,编译原理,计算机控制,计算机网络等知识。在真正学习嵌入式开发之前,首先要打好基础。其中最重要的是C语言基础、数字电路、计算机组成原理三门课程。对于
    发表于 09-29 14:19

    嵌入式开发要学什么内容 嵌入式开发学习路线介绍

    客学院嵌入式开发讲师在这里介绍嵌入式开发学习路线,希望对于嵌入式开发学习内容不了解的读者可以有所帮助。嵌入式开发要学什么内容 嵌入式开发学习
    发表于 06-30 10:07

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

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

    如何入门嵌入式开发

    ,线程通信,网络编程等)以下开始分化,嵌入式开发一般有三种方向,单片机开发工程师,驱动开发工程师,嵌入式应用开发工程师1,单片机(直接整st
    发表于 11-03 08:17

    嵌入式开发选择C语言的原因

    一些复杂的功能,但是汇编比C语言访问硬件的效率更高。所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。③C
    发表于 11-03 07:30

    什么是嵌入式技术?嵌入式开发方向是什么?

    嵌入式操作系统、开发工具、系统应用开发(&GUI)、系统移植、驱动、内核。4、所具备的知识体系:C语言、单片机、
    发表于 11-05 09:00

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

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

    VScode嵌入式开发如何入门

    VScode嵌入式开发入门教程1.VScode进行单片机嵌入式开发教程2.单片机开发环境的搭建3.相关技巧与设置 VScode嵌入式开发
    发表于 11-08 08:13

    VScode嵌入式开发ESP8266详解

    VScode嵌入式开发ESP32以及ESP8266入门1.适用与有部分C语言开发者或者学生学习ESP系列的
    发表于 11-08 06:12

    嵌入式开发C编程技巧是什么

    c语言嵌入式系统编程技巧Let’s understand what’s an Embedded Development? 让我们了解什么是嵌入式开发? Development
    发表于 12-15 08:26

    嵌入式开发选择C语言的原因是什么

    一些复杂的功能,但是汇编比C语言访问硬件的效率更高。所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。③C
    发表于 12-15 08:01

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

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

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

    关注、星标公众号,直达精彩内容ID:技术让梦想更伟大作者:李肖遥对于现在我们从事嵌入式开发的人员来说,C语言好像是必备的技能,也是最常见的开发语言
    发表于 12-20 07:14

    嵌入式开发中C语言指针使用

    在 DOS 下进行程序开发,除了常见的一些编译错误外,还可能出现一些运行错误,运行错误中最为严重的一种就是将磁盘文件系统破坏了,从而造成系统不能正常工作。这一类的错误往
    发表于 06-09 16:11 193次下载