二维数组指针

来源:互联网 发布:ie版本低 淘宝无法登录 编辑:程序博客网 时间:2024/06/03 07:48
a  
代表维数组的首地址,0的地址
na+i
代表i的地址
n*(a+i)  a[i]
代表i行第0的地址
n*(a+i)+j  a[i]+j
代表i行第j的地址
n*(*(a+i)+j )  a[i][j]
代表i行第j元素
 
n元素a[i][j]的地址的几种等价的引用方式
&a[i][j]
a[i]+j
*(a+i)+j
&(*(a+i))[j]
n元素a[i][j]的几种等价的引用方式
a[i][j]
*(a[i]+j)
*(*(a+i)+j)
(*(a+i))[j]
 
n二维数组的指针——列指针
int *p;
p = *a;//用列地址初始化
n相对于数组起始地址的偏移量
i*m+j
for (i=0; i<n; i++)
for (j=0; j<m; j++)
  printf("%d",*(p+i*m+j));
 
n二维数组的指针——行指针
int (*p)[3];
p = a;//地址初始化
for (i=0; i<n; i++)
for (j=0; j<m; j++)
  printf("%d",*(*(p+i)+j));
 
//指针数组 
main()
{
    int i;
    char *ptr[] = {"Pascal","Basic","Fortran",
                    "Java","Visual C"};
    char **p;
  p = ptr;
    for (i=0; i<5; i++)
    {
        printf("%s\n", *p);
        p++;
    }
}
0 0
原创粉丝点击