C语言--一维数组

一维数组:
    int a[10];
    一维数组名a是一个指针常量,而不是指针变量。你不能修改常量的值
    在几乎所有使用数组名的表达式中,数组名的值是一个指针常量,也就是数组第一个元素的地址。它的类型取决于数组元素的类型;如果他们是int类型,那么数组名的类型就是“指向int的常量指针“;如果他们是其他类型,那么数组名的类型就是”指向其他类型的常量指针“。
    只有在两种场合下,数组名并不用指针常亮来表示--就是当数组名作为sizeof操作符或者单目操作符&的操作时。
    sizeof返回整个数组的长度,而不是指向数组的指针的长度。
    &取一个数组名的地址所产生的是一个指向数组的指针,而不是一个指向某个指针常量的指针。

#include<stdio.h>

int
main(int argc, char *argv)
{
    int a[10] = {10,1,2,3,4,5,6,7,8,9};


    printf("sizeof(a) = %d\r\n", sizeof(a));
    printf("&a = %p\r\n", &a);
    printf("&a[0] = %p\r\n", &a[0]);
    printf("*a = %d\r\n", *a);
    printf("*&a[0] = %d\r\n", *&a[0]);

    return 0;
}
/**程序输出结果:
sizeof(a) = 40
&a = 0028FEF8
&a[0] = 0028FEF8
*a = 10
*&a[0] = 10
*/

    除了优先级之外,下标引用和间接访问完全相同。例如,下面这两个表达式是等同的:
    array[subscript];
    *(array+subscript);

猜你喜欢

转载自blog.csdn.net/tyustli/article/details/86323460