您当前的位置:首页 > 计算机 > 编程开发 > C语言

array_name和&array_name有什么不同?

时间:12-30来源:作者:点击数:

前者是指向数组中第一个元素的指针,后者是指向整个数组的指针。

注意;笔者建议读者读到这里时暂时放下本书,写一下指向一个含MAX个元素的字符数组的指针变量的说明。提示:使用括号。希望你不要敷衍了事,因为只有这样你才能真正了解C语言表示复杂指针的句法的奥秘。下文将介绍如何获得指向整个数组的指针。

数组是一种类型,它有三个要素,即基本类型(数组元素的类型),大小(当数组被说明为不完整类型时除外),数组的值(整个数组的值)。你可以用一个指针指向整个数组的值:
    char  a[MAX];    /*arrayOfMAXcharacters*/
    char    *p;      /*pointer to one character*/
    /*pa is declared below*/
    pa=&al
    p=a;             /* =&a[0] */

在运行了上述这段代码后,你就会发现p和pa的打印结果是一个相同的值,即p和pa指向同一个地址。但是,p和pa指向的对象是不同的。

以下这种定义并不能获得一个指向整个数组的值的指针:
    char *(ap[MAX]);

上述定义和以下定义是相同的,它们的含义都是“ap是一个含MAX个字符指针的数组”;
    char *ap[MAX];

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
    无相关信息
栏目更新
栏目热门