一、二级指针

 

        指针变量也是变量,是变量就应有地址,那指针变量的地址存放在哪里?存放在二级指针变量。

        C语言二级指针、指针数组插图

此时,*ppa == pa,**ppa == a

二、指针数组

        指针数组,顾名思义就是存放指针的数组

C语言二级指针、指针数组插图(1)

数组每个元素为int类型,于是为 int arr[ 5 ] ,数组每个元素为char类型,于是为 char arr[ 5 ] ,那么如果数组每个元素为 int* (指针)类型,那么即为 int* arr[ 5 ] 。

        指针数组的每个元素是地址,又可以指向一块区域

三、指针数组模拟二维数组

#include 
int main()
{
	int arr1[] = { 1,2,3,4,5 };
	int arr2[] = { 2,3,4,5,6 };
	int arr3[] = { 3,4,5,6,7 };
	//数组名是数组⾸元素的地址,类型是int*的,就可以存放在parr数组中
	int* parr[3] = { arr1, arr2, arr3 };
	int i = 0;
	int j = 0;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 5; j++)
		{
			printf("%d ", parr[i][j]);
		}
		printf("
");
	}
	return 0;
}

C语言二级指针、指针数组插图(2)

        parr[ i ]是访问parr数组的元素,parr[ i ]找到的数组元素指向了整形一维数组,parr[ i ][ j ]就是整型一维数组中的元素。上述的代码模拟出二维数组的效果,实际上并非完全是二维数组,因为每行并非是连续的。

本站无任何商业行为
个人在线分享 » C语言二级指针、指针数组
E-->