首页 > 编程语言 > 详细

[C语言基础] 数组与指针之间的引用

时间:2014-04-13 13:05:58      阅读:409      评论:0      收藏:0      [点我收藏+]

通过指针引用数组,通过数组引用指针,你搞明白了么?通过下面3种情形来了解一下数组和指针

 

Case 1.

bubuko.com,布布扣
unsigned char arry[10];
unsigned char *ptr;
unsigned char a, b, c;

ptr = arry;
a = ptr[0];
b = ptr[1];
c = ptr[2];
bubuko.com,布布扣

 

Case 2.

bubuko.com,布布扣
unsigned char arry[10];
unsigned char *ptr;
unsigned char a, b, c;

ptr = arry;
a = *ptr;
b = *(ptr+1);
c = *(ptr+2);
bubuko.com,布布扣

 

Case 3.

unsigned char *ptr = (unsigned char *)0x20000000;
unsigned char a, b, c;

a = ptr[0];
b = ptr[1];
c = ptr[2];

 

以上3种情形编译都能通过,想要表达的是怎样用数组的方式(下标)表达一个指针内容,和怎样用指针变量的方式表达一个数组。

对于Case 1,C语言规定,数组名(不包括形参数组名,形参数组并不占据实际的内存单元)代表数组中首元素(即序号为0的元素)的地址,所以ptr指向数组Arry的首地址。那么带下标的指针变量是什么含义呢?其实在程序编译的时候,对下标的处理方法是转换为地址的,对ptr[i]处理成*(ptr+i)。

Case 2 是指针的常规引用,Case 3和Case 1类似,都是带下标的指针变量的应用。

 

通过以上的简单分析,可以得出一个结论,下标法直观,指针变量法效率高。

 

      [参考]:

[1] 谭浩强著. C程序设计教程. 北京:清华大学出版社,2007

/×××××××××××××××××××××××××××××××××××××××× THE END××××××××××××××××××××××××××××××××××××××××××××/

 

 

[C语言基础] 数组与指针之间的引用,布布扣,bubuko.com

[C语言基础] 数组与指针之间的引用

原文:http://www.cnblogs.com/mr-bike/p/3661990.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!