指针数组和数组指针

本文深入探讨了C++中的指针与数组的概念,包括函数指针、指针数组、多维指针以及数组指针的用法。通过实例展示了指针运算及数组访问的细节,如sizeof运算符的应用,以及不同层级指针的解引用方式。同时,解释了复杂指针类型的声明和理解,帮助读者掌握C++中复杂的内存操作技巧。
摘要由CSDN通过智能技术生成
void fun()//函数指针和指针函数
{
	int a[3];
	int* arr[3];//指针数组
	int** aa[3][4];
	int*** aaa[3][4][5];
	int(*brr)[4];//数组指针:首先它是一个指针,它指向一个数组(指向数组的指针)
	printf("%d\n", sizeof(a));//3*4
	printf("%d\n", sizeof(arr));//3*8
	printf("%d\n", sizeof(aa));//3*4*8
	printf("%d\n", sizeof(aaa));//3*4*5* 8
	printf("%d\n", sizeof(brr));//8(一个指针的大小永远是8(64位))


//先看()再看[];
	float(**d)[10];//d是一个二级指针,指向一个一维数组的指针,数组的元素是float
	double* (*g)[10];//g是一个一级指针,指向一个一维数组,数组的元素是double*
	double(*f[10])();//f是一个数组,有10个元素,每一个元素都是函数指针double(*)(),函数类型是没有参数且返回值是double的函数
	int* ((*b)[10]);//b是一个指针,指向一个一维数组,且数组中元素都是int*
	int (*fun)(int);//fun是一个函数指针,函数接收一个int型参数,返回值为int
	int (*(*F)(int, int))(int);//F是一个函数指针,函数接收(int,int),返回值类型是一个函数指针,返回值的函数指针指向有一个int类型的参数且返回int的返回值
}

void fun1()
{
	int v[2][10] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 };
	int(*a)[10] = v;
	printf("%d\n", **a);//1       a[0][0]
	printf("%d\n", **(a+1));//    a[1][0]
	printf("%d\n", *(*a+1));//2   a[0][1]
	printf("%d\n", *(a[0]+1));//2 a[0][1]
	printf("%d\n", *(a[1]));//11  a[1][0]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曦樂~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值