第一次发博客~~简单说一下自己对于“指针数组”以及“数组指针”的认识
指针数组:指的是存放指针的一维数组,形如 : int *p[4]。由于【】的优先级比*的优先级要高,所以先与【4】结合,然后再与前面的*结合。既然叫指针数组,那么其本质上还是一个数组,相较于其他存放数值的数组而言,这里存放的是地址。(注意值和址的不同)
数组指针:指的是指向一维数组的指针。形如:int (*p)[4]。即(*p)有四个原宿,每个元素为整型。也就是p所指的对象是有4个整型元素的数组,即p是指向一维数组的指针。可认为是一个二维数组。
#include <stdio.h>
int main(void)
{
//指针数组
int *a[4];//定义长度为4的一维数组,数组的每个变量都是一个指针
int b[4]={1,2,3,4};
int i, j;
for(i = 0; i < 4; i++ )
{
a[i] = &b[i];//数组a中的每一个元素都是数组b的地址
printf("%d\n",*a[i]);
}
//数组指针
int (*c)[4];//指针变量c指向包含4个整型元素的一维数组
//(*p)有4个元素,每个元素为整型
//可类比我们熟悉的int c[4],即c有四个元素,每个元素为整型
int d[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//构建二维数组
c = d;//将二维数组的首元素地址赋给数组指针d
for(i = 0; i <3; i++)
{
for(j = 0; j < 4; j++)
{
printf("%d\n", *(*(d+i)+j));
//printf("%d\n", *(d[i]+j));
}
}
}