指针学习笔记2(数组指针和指针数组)

目录

1、指针数组

2、数组指针

3、数组指针的应用

4、小结


1、指针数组

指针数组是数组,用来存放指针

int main()
{
	int* parr[4];//存放整型指针的数组——指针数组
	char* pch[4];//存放字符指针的数组——指针数组
	return 0;
}

一种简单的指针数组应用方法

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[] = {arr1, arr2,arr3};
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		int j = 0;
		for (j=0;j<5;j++)
		{
			printf("%d ",*(parr[i]+j));
		}
		printf("\n");
	}
	return 0;
}

通过解引用parr[i] 来找到数组首元素地址,+j向后移动到对应元素

2、数组指针

数组指针是指针,指向数组的指针,可以存放数组的地址

int mian()
{
	int* p = NULL;//p是整形指针——指向整形地址——存放整形地址
	int* pc = NULL;//pc是字符指针——指向字符地址——存放字符地址
	             //数组指针——指向数组地址——存放数组地址
	int arr[10] = {0};
	//arr——首元素地址
	//&arr[0]——首元素地址
	//&arr——数组的地址
	return 0;
}

实例:

	int arr[10] = {1,2,3,4,5,6,7,8,9};
	int(*p)[10] = 0;//p先和*组合,是个指针

	char* arr[5];
	char* (*pa)[5] = &arr;
	//char*表示pa指向的数组的元素类型的char*
	//*pa中*说明pa是指针
	//pa是指针变量名
	//[5]表示指向的数组是5个元素的

3、数组指针的应用

因为数组名就是首元素地址,数组arr的首元素是第一行,一个有5个元素的一维整型数组,所以可以使用数组指针int(*p)[5]来接收

#include<stdio.h>


void print(int(*p)[5],int x,int y)//参数是指针的形式
{
	int i = 0;
	for (i=0;i<x;i++)
	{
		int j = 0;
		for (j = 0; j < y; j++)
		{
			printf("%d ", *(*(p + i) + j));//p[i][j]
		}
		printf("\n");
	}
}


int main()
{
	int arr[3][5] = { {1,2,3,4,5} ,{2,3,4,5,6} ,{3,4,5,6,7} };

	print(arr,3,5);//arr————数组名——首元素地址
	return 0;
}

一般至少到二维数组才会使用数组指针。

4、小结

int arr[5];
  //arr是一个5个元素的整型数组
int* paee1[10];
   //parr1是一个数组,该数组有10个元素,每个元素的类型是int*parr1,是指针数组
int(*parr2)[10];
   //parr2是一个指针,该指针指向了一个数组,数组有是个元素,每个元素的类型是int,是数组指针
int(*parr3[10])[5];
   //parr3是数组,该数组有10个元素,每个元素是一个指针,该数组指针指向的数组有5个元素,每个元素是int

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值