• 数组与指针


    有这样一种说法:“在C中,如果数组名后不加[],只单独写数组名,那么该名称表示指向数组初始元素的指针”。

    这种说法的信息量是负的。

    在语法上,数组和[]是没有关系的。

    事实上,在最开始的时候,p[i]只是*(p + i)的简便写法;下标运算符[]原本只有这种用法,它和数组是没有关系的。

    也就是说,数组声明中的[]和数组元素表达式中的[]意义是完全不同的。

    事实上,由于a + b与b + a的意义没有改变,因此我们可以把*(p + i)写成*(i + p);同时由于p[i]是*(p + i)的简便写法,由此类推实际上它可以写成i[p]。

    我们使用数组元素时通常会写成array[4]的样子,但实际上如果我们写成4[array]也是正确的。

    虽然很另类,但是下面的例子是可以正确运行的:

    #include <stdio.h>

    int main(void)
    {
        int array[5];
        int i;

        for(i = 0; i < 5; i = i + 1) {
            array[i] = i;
        }

        printf("i[array] is legitimate. 4[array] = %d ", 4[array]);
    }

  • 相关阅读:
    协程
    多进程
    多线程
    模块进阶
    内建函数
    内建属性
    属性property
    私有化
    深拷贝、浅拷贝
    ==、is
  • 原文地址:https://www.cnblogs.com/freshair_cnblog/p/11655013.html
Copyright © 2020-2023  润新知