1. 通过数组名访问数字元素

    代码一

    1. //代码3.1
    2. #include <stdio.h>
    3. int main()
    4. {
    5. int i, a[] = {3,4,5,6,7,3,7,4,4,6};
    6. for (i = 0; i <= 9; i++)
    7. {
    8. printf("%d\n", a[i]);
    9. }
    10. }

    代码二

    //代码3.2
    #include <stdio.h>
    
    int main()
    {
        int i, a[] = {3,4,5,6,7,3,7,4,4,6}; 
        for (i = 0; i <= 9; i++) 
        { 
            printf("%d\n", *(a+i)); 
        } 
    }
    
    1. 通过指针访问数组元素 ```c //代码3.3 int i, pa, a[] = {3,4,5,6,7,3,7,4,4,6}; pa = a; /请注意数组名 a 直接赋值给指针 pa*/ for (i = 0; i <= 9; i++) { printf(“%d\n”, pa[i]); }

    很显然,它也是显示 a 数组的各元素值。 另外与数组名一样也可如下: int i, pa, a[] = {3,4,5,6,7,3,7,4,4,6}; pa = a; for (i = 0; i <= 9; i++) { printf(“%d\n”, (pa+i)); }

    
    3. 数组名与指针的区别
    
    我们看几行C++代码
    ```cpp
    //代码3.4
    #include <iostream>
    
    int main()
    {
        using namespace std;
        int i,*pa;
        int a[] = {1,2,3,4,5,6,7,8,9};
        pa = a;
        for (i = 0; i < 9; i++)
        {
            cout << (*pa) << endl;
            pa++; /*注意这里,指针值被修改*/
        }
    }
    

    这段代码成功运行,输出了1-9;当我们把第12行的pa改成a时,编译出现了错误
    可以看出, 指针和数组名还是不同的。 其实上面的指针是指针变量,而数组名只是一个指针常量。这个代码与上面的代 码不同的是,指针 pa 在整个循环中,其值是不断递增的,即指针值被修改了。 数组名是指针常量,其值是不能修改的,因此不能类似这样操作:a++。

    1. 声明一个指针变量

    我们在代码3.4中做一些小改变

    //代码3.5
    #include <iostream>
    
    int main()
    {
        using namespace std;
        int i,*const pa;
        int a[] = {1,2,3,4,5,6,7,8,9};
        pa = a;
        for (i = 0; i < 9; i++)
        {
            cout << (*pa) << endl;
            pa++; /*注意这里,指针值被修改*/
        }
    }
    

    编译出现了错误,如下图所示
    image.png 因为 pa 指针被定义为常量指针了。这 时与数组名 a 已经没有不同。这更说明了数组名就是常量指针