数组名与指针

来源:互联网 发布:用java开发数据库系统 编辑:程序博客网 时间:2024/03/28 17:33

一个 T 的数组类型的左值如果出现在表达式中会蜕变为一个指向数组第一个成员的指针(除了三种例外情况); 结果指针的类型是 T 的指针。 这就是说, 一旦数组出现在表达式中, 编译器会隐式地生成一个指向数组第一个成员地指针, 就像程序员写出了 &a[0] 一样。

三种例外情况:

1.数组作为  sizeof  操作符的操作数,

2.数组作为 & 操作符的操作数

3.数组作为字符数组的字符串初始值。

 如果你把数组地址赋给指针:

    p = a;

那么 p[3] 和 a[3] 将会访问同样的成员。

注意:动态分配的数组的数组名,用 sizeof 不能给出 “数组” 的大小。

例如:

#include <stdlib.h>
    int *dynarray;
    dynarray = malloc(10 * sizeof(int));

......

free(dynarry);

用sizeof(dynarray)得出的是:int的长度。

原创粉丝点击