分享

指针数组与数组指针

 champion_xu 2012-05-29
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *p[3];//p不是变量,元素才是变量,即p[i],这是指向int的一个一维指针数组
    int (*q)[3];//q是变量指针,可以指向某个数组,是数组指针
    int d[3]={1,2,3};

    for(i=0;i<3;i++) p[i]=(int *)malloc(sizeof(int)); //only when we malloc for p,we can use p;
    *p[0]=d[0];
    *p[1]=d[1];
    *p[2]=d[2];
    printf("*p[0]=%d,*p[1]=%d,*p[2]=%d\n",*p[0],*p[1],*p[2]);
    q=d;
    printf("(*q)=%d,q[0][1]=%d\n",(*q)[1],q[0][1]); //从结果可以看出这两个效果是一样的,可以引出数组和指针的关系
    return 0;
}

指针指向数组时候便是指向了数组的第一个数的地址,这样指针下的地址就可以直接用数组第一个数的地址来代替。
比如:定义int a[10]; int *p;
            则p=a;等价于p=&a[0];
           上述两种表示方法都指向了数组a。这也就相当于p[0]=a[0]。这里p[0](也可以表示为*(p+0))就直接代表了*p,如果p之前未被改动过的话。

     
运行结果:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多