嵌入式C语言中指针的应用(下)

深入学习数组

编译器角度理解数组

在编译器看来数组也是一个变量,在编译的时候会将一个变量名字和这段内存空间的第一个字节地址绑定,变量的类型决定了这段空间的字节数。在访问这段空间的时候一个方法就是使用变量名访问,但是变量名会受到作用域的限制,还有一种方式就是直接使用地址访问,并且不会受到作用域的限制。

从内存角度理解数组

首先明白一点,就是数组的空间之间是连续的,这样就代表了虽然数组中的内容也只能一个一个进行访问,但是由于其是连接在一起的,所以使用指针进行操作非常方便。实际上数组就是高效利用指针的例子。

一维数组中几个关键符号的理解

举例:int buf [100] = {0}为例,buf、buf[0]、&buf[0]、&buf这四个符号的内涵。
buf:一是数组名,二是元素的首字节地址,是一个常量值。
buf[0]:就是数组的首地址
&buf[0]:等价于buf,是首地址的地址值,是一个常量值。
&buf:标志数组首地址,是一个地址常量,同样只能作为一个右值。

printf(“%p/n”,&buf+1)和printf(“%p/n”,buf+1)是完全不一样的&buf代表的整个数组的首地址,加一是加的是整个数组空间,数组首地址主要用于构造多多维数组。buf代表的数组第一个元素的首字节地址,加一是加的一个元素空间的大小。

如何使用指针访问数组

1.利用下标进行访问

int i = 0;
for (i = 0;i<sizeof(buf)/sizeof(buf[0]);i++)

2.利用指针常量进行访问

int i = 0;
for (i = 0;i<sizeof(buf)/sizeof(buf[0]);i++)
{
   
   
    printf("%d\n", *(buf+i));
}

3.利用指针变量进行访问

int i = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值