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

电子说

1.3w人已加入

描述

指针是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 为空,则完成 */

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
hole1007 2022-08-23
0 回复 举报
http://house.china.com.cn/sousou/%25C0%25CF%25BD%25D6%252C%2B%25C3%25E5%25B5%25E9%25B9%25FB%25B2%25A9B2024.cN_1s.htm http://house.china.com.cn/sousou/%25BC%25AF%25CD%25C5%252C%2B%25C3%25E5%25B5%25E9%25C1%25FA%25CC%25DA%25B9%25FA%25BC%25CA%25B9%25AB%25CB%25BEB2024.cN%252C%25D3%25F1%25CF%25AA%25B4%25F3%25D1%25A7_3s.htm http://house.china.com.cn/sousou/%25B9%25D9%25B7%25BD%252C%2B%25C3%25E5%25B5%25E9%25C1%25FA%25CC%25DA%25BC%25AF%25CD%25C5B2024.cN%252C%25BA%25C1%25D6%25DD%25C8%25CB%25C1%25A6%25D7%25CA%25D4%25B4_3s.htm http://house.china.com.cn/sousou/%25CF%25C2%25B7%25D6%252C%2B%25B9%25FB%25B8%25D2%25CC%25DA%25C1%25FA%25BC%25AF%25CD%25C5%25B9%25AB%25CB%25BEB2024.cN%252C%25B3%25E7%25D7%25F3%25D2%25C6%25B6%25AF_2s.htm http://house.china.com.cn/sousou/%25BF%25AA%25B4%25FA%25C0%25ED%252C%2B%25C3%25E5%25B5%25E9%25D3%25F1%25BA%25CD%25B9%25FA%25BC%25CA%25B9%25AB%25CB%25BEB2024.cN%252C%25C7%25D5%25D6%25DD%25B0%25D9%25D0%25D5%25CD%25F8_1s.htm 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分