(*p)[n] ,指向多维数组的指针运算基础知识
2014-08-29 22:25
281 查看
#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>
int main()
{
int a[3][4]= {1,3,5,7,9,11,13,15,17,19,221,23};
int *p,i,j;
p = a;
scanf("i=%d,j=%d",&i,&j);
printf("a[%d][%d] = %d\n",i,j,*(p+i*4+j));
return0;
}
int main()
{
int a[3][4]= {1,3,5,7,9,11,13,15,17,19,221,23};
int (*p)[4],i,j;
p = a;
scanf("i=%d,j=%d",&i,&j);
printf("a[%d][%d] = %d\n",i,j,*(*(p+i)+j));
return0;
}
*p做为指向单个元素的指针每次运算(如++)均以单个元素为单位,而(*p)[n]则是以n为基准(如++是一次指向多维中下一行,即地址增加n*sizeof(),第n+1个元素)。
在前定义(*p)[n]下,虽然*(p+i)和(p+i)在数值上是同一地址,当由于p指向多维数组,读取时有递增或递减趋势,*(p+i)的++操作是列向自增,跨度为单个元素,(p+i)的++操作是行向自增,跨度为n个元素。
*p
共具有n个指针,如*p[i],p[n]为一地址型数组,存放的均为地址;
(*p)[n]只有一个指针p,指向多维数组。
#include <stdlib.h>
#include<malloc.h>
int main()
{
int a[3][4]= {1,3,5,7,9,11,13,15,17,19,221,23};
int *p,i,j;
p = a;
scanf("i=%d,j=%d",&i,&j);
printf("a[%d][%d] = %d\n",i,j,*(p+i*4+j));
return0;
}
int main()
{
int a[3][4]= {1,3,5,7,9,11,13,15,17,19,221,23};
int (*p)[4],i,j;
p = a;
scanf("i=%d,j=%d",&i,&j);
printf("a[%d][%d] = %d\n",i,j,*(*(p+i)+j));
return0;
}
*p做为指向单个元素的指针每次运算(如++)均以单个元素为单位,而(*p)[n]则是以n为基准(如++是一次指向多维中下一行,即地址增加n*sizeof(),第n+1个元素)。
在前定义(*p)[n]下,虽然*(p+i)和(p+i)在数值上是同一地址,当由于p指向多维数组,读取时有递增或递减趋势,*(p+i)的++操作是列向自增,跨度为单个元素,(p+i)的++操作是行向自增,跨度为n个元素。
*p
共具有n个指针,如*p[i],p[n]为一地址型数组,存放的均为地址;
(*p)[n]只有一个指针p,指向多维数组。
相关文章推荐
- 指向指针的指针,指针的运算,指针与多维数组的关系
- 关于指针的一些知识,记多维数组指针、指针数组、指针的指针和指向函数的指针
- 多维数组,指针数组使用,指向指针的指针
- 在VB.NET中对于多维数组相关基础知识
- C语言基础知识之(十三):指针、指针和数组
- C语言指向多维数组的指针
- C基础知识之理解指向函数的指针
- C++基础知识——指向指针的指针
- C/C++基础知识(一)数组和指针
- 黑马程序员--C语言基础之--数组、指针的基础知识
- 076.Pointer Two Array 指向多维数组的指针
- C基础知识--指针算术运算
- 指向多维数组的指针
- C语言学习-----指针篇(1)-----指向多维数组的指针和指针变量
- 指向多维数组的指针
- C语言基础2:位运算,指针,数组
- 1124C语言----指向多维数组的指针和指针变量
- C语言基础-06-指向一维数组元素的指针
- 指针知识梳理10-指向数组的指针
- 076.Pointer Two Array 指向多维数组的指针