C语言通过指针引用数组

输出数组中的全部元素(下标法):

#include
int main()
{
    int a[10],i;
    for(i=0; i<10; i++)
        a[i]=i;
    for(i=0; i<10; i++)
        printf("a[%d]=%d\n",i,a[i]);

}

C语言通过指针引用数组_第1张图片
输出数组中的全部元素(通过数组名计算元素的地址,找出元素的值):

#include
int main()
{
    int a[10],i;
    for(i=0; i<10; i++)
        *(a+i)=i;
    for(i=0; i<10; i++)
        printf("a[%d]=%d\n",i,*(a+i));
}

C语言通过指针引用数组_第2张图片
输出数组中的全部元素(用指针变量指向元素):

#include
int main()
{
    int i,*p;
    int a[10];
    p=a;
    for(i=0; i<10; i++)
        *(p+i)=i;
    for(i=0; i<10; i++)
        printf("a[%d]=%d\n",i,*(p+i));

}

C语言通过指针引用数组_第3张图片
以上为3种形式,可见这三种结果一样。
以下这一代码需要注意:

#include
int main()
{
        int *p,i,a[10];
        p=a;
        for(i=0;i<10;i++)
            *p++=i;
        p=a;///这一行很重要,如果没有这一行不会出现你想要的东西哦。这行代码的用处就是在下一次循环开始前,确保指针p指向数组的首地址。
        for(i=0;i<10;i++)
            printf("a[%d]=%d\n",i,*p++);
    }

由上一代码的实验结果可知:虽然定义数组时指定它包含10个元素,但指针变量可以指到数组以后的内存单元,系统并不认为非法。

你可能感兴趣的:(C语言通过指针引用数组)