数组指针

数组指针

目录导航

基本解释

数组指针是指向数组地址的指针,其本质为指针;

指针数组是数组元素为指针的数组(例如 int *p[3],定义了三个p[0],p[1],p[2]的指针),其本质为数组。

数组指针的使用在某些情况下与指针数组很相似,要注意区别。

二维数组指针

为了能更好地理解数组指针,与普通指针及二级指针的区别,下面举例说明一下。

例如:{int a;int (*p)[5]=a;}这里a是个二维数组的数组名,相当于一个二级指针常量;

p是一个指针变量,它指向包含5个int元素的一维数组,此时p的增量一维数组长度为单位;

*p+i是二维数组a[i]的地址;

*(p+2)+3表示a地址(第一行为0行,第一列为0列),*(*(p+2)+3)表示a的值。

//(*p)[5]其中的5换成其他的数字在vc++6.0环境中都无法通过编译

(*p)其中的5在上述例子中没有表示任何意思你可以换成除0以外的整数,的作用就是帮助你记忆说你所指向的一维数组的长度。(不过除了与定义的二维数组的长度一致的不会警告之外 )其他的数会警告但是不影响结果。

举例

数组指针:    char c[] = {"妹", "妹", "你", "坐", "船", "头"};  char (*p);  int i;

p = c;  for(i=0; i<6; i++)  {  printf("%s, ", *(p+i)); //*(p++);  }

printf("\n"); //p=c;/p--;

for(i=5; i>=0; i--)  {  printf("%s\n", *(p+i)); //*p--;/*--p;  }

指针数组:

int i;  char *pch = {"妹","妹","你","坐","船","头"}; //这种写法不提倡,应该先声明一个数组,再把地址给指针,  for(i=0;i<6;i++) //否则很危险;  {  printf("%s, ",*(pch+i));  }  printf("\n");  for(i=5; i>=0; i--)  {  printf("%s\n",*(pch+i));   }

相关百科
返回顶部
产品求购 求购