posts - 25, comments - 7, trackbacks - 0, articles - 0

指针和数组 读书笔记

Posted on 2007-06-28 20:24 谢龙飞 阅读(157) 评论(0)  编辑 收藏 引用
指针和数组看了很久没明白过来啊
尤其是什么多维数组的指针
先来点简单的 笔记吧
int *p( ) :定义一个返回值为指针的函数
int (*p)[n]:定义一个指向有n个元素的一维数组的指针 注意:p+1指向下一个含n个元素的一维数组
int (*p)( ):定义一个函数指针
int *p[n]:定义一个指针数组
int **p:定义一个指向int *类型指针的指针p

对于指针数组:
如定义一个指针数组如下
int *p[2];
int a[3]={1,2,3};
int b[3]={4,5,6};
p[0]=a;
p[1]=b;

 此时p[0]相当于一个指针变量 
对一个指针变量a 有a[n]=*(a+n) 如:*a=a[0] *(a+1)=a[1]  .................

则有p[0][0]=*(p[0]+0)=1
        p[0][1]=*(p[0]+1)=2
        p[0][2]=*(p[0]+2)=3 

在多维数组中也要注意运用 a[n]=*(a+n)式子进行与如上相似的变换
如:a[i][j]=*(*(a+i)+j)
        上式也是根据a[n]=*(a+n)变换而来的
  首先a[i]=*(a+i)
         再来一次类似变换 就有a[i][j]=*(*(a+i)+j)
另注意:对二维数组:int a[i][j]
    a代表的是数组的首地址 即:第0行 a[0][0]的地址
    而a+1代表的不是a[0][1]的地址 而是代表第1行的a[1][0]的地址
    
    a[1]是一个地址即:a[1][0]的地址 因此a[1]+1就是a[1][1]的地址 *(a[1]+1)=a[1][1]


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理