C语言的那些小秘密之指针(二)语言的那些小秘密之指针(二)
懂得C语言的人都知道,C语言之所以强大,以及其自由性,绝大部分体现在其灵活的指针运用上。因此,说指
针是c语言的灵魂,一点都不为过。所以从我的标题加了个(一)也可以看出指针的重要性,我尽可能的向大家交
代清楚我对于指针的理解。
懂得C语言的人都知道,C语言之所以强大,以及其自由性,绝大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵
魂,一点都不为过。所以从我的标题加了个(一)也可以看出指针的重要性,我尽可能的向大家交代清楚我对于指针的理解。所
以在讲解的过程中我尽可能的用代码加文字的描述方式,通过代码的分析来加深我们对于指针的理解,我给出的都是完整的代
码,所以读者可以在看的过程中直接copy下去即可运行,希望下面的讲解能够对你有所帮助。
在此也特地强调下,如果以后出现类似的情况时,我博客的第一段均作为摘要。如果已经在前面的博客中看过摘要的,那么重
复的摘要部分可跳过不读,直接进入正文。
接着上一篇的指针部分,我们接下来看看数组的指针和指向数组的指针变量。数组的指针就是数组的起始地址,数组元素的指
针是数组元素的地址。对于一个数组元素的引用我们通常可以使用两种方法:
1、下标法,如a[8]。
2、指针法。
其中使用指针法的优点是使得目标程序占内存少、运行速度快,从而使得其质量更高。为什么说指针具有这样的优点呢,我想
还是有必要在此给出点我解释,因为指针在32位机器下占用4个字节,如果函数传输一个占用内存很大的对象例如:int
a[2000],显然用指针引用传送简单,节省了内存,也节省了用于复制对象的时间;如果我们用下标法来引用数组,还得去取数
组的起始地址,通过base + offset再转换为直接寻址,比指针多了操作。
从以上可以看出,指针能力很强,能完成许多事情,C的精髓就在于指针,使得C能接近ASM的效率。所以我们在写编写程序
的时候有必要充分利用指针的优点,编写出高效的C语言代码。
下面来看看一个代码:
#include
#include
int main()
{
int a[8];
int *p;
//***************************用下标法打印a数组**************************//
printf("***************************用下标法打印a数组**************************");
for(int i=0;i<8;i++)
{
a[i]=i;
printf("a[%d]=%d ",i,a[i]);
}
printf("****************************end end end******************************");
//****************************end end end******************************//
//***************************使用指针变量打印**************************//
printf("***************************使用指针变量打印**************************");
p=a;
for(int j=0;j<8;j++)
{