数组指针类型与函数指针类型

本文深入探讨了数组指针与函数指针的概念,解析了typedef在数组与函数类型定义中的应用,阐述了数组指针、指针数组及函数指针的区别与联系,通过实例演示了如何使用这些指针进行数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于数组类型与函数类型的定义方法很类似,因此放到一起。

数组指针
数组类型的定义
typedef int (myArrayType)[10];
int main()
{
	int a[10];
	myArrayType b;//等价于int b[10];
	a[0] = 1;
	b[0] = 1;
	cout << a[0] << " " << b[0] << endl;
	return 0;
}
输出结果:在这里插入图片描述
数组指针类型的定义
typedef int(*myPArrayType)[10];
int main()
{
	int a[10];
	a[0] = 1;
	myPArrayType p;
	p = &a;
	cout << (*p)[0] << endl;
	return 0;
}
输出结果:

在这里插入图片描述

myPArrayType是数组的地址,而a是数组首元素的地址,因此myPArrayType相当于一个二级指针。

说到数组指针就不得不提一下指针数组,初学指针与数组时很容易混淆这两个概念,但其实也很好理解。数组指针可以念成数组的指针,也就是说本质上是一个指针,只是该指针指向的是一个数组罢了,也就是上面这个例子。而指针数组又可以念成指针的数组,顾名思义本质上是一个数组,只不过数组的元素是指针。

另外值得注意的是a+1&a+1完全不同,指针+1的步长取决于指针所指的数据类型,a指的是int类型因此向后移动四个字节,而&a指向的是一个数组因此向后移动四十个字节。

函数指针
通过函数类型定义函数指针
typedef int (myFuncType)(int);
int main()
{
	int a = 5;
	myFuncType *Func;
	Func = &add;
	cout << Func(a) << endl;
	return 0;
}
输出结果:

在这里插入图片描述

直接定义函数指针类型
typedef int (*myPFuncType)(int);
int main()
{
	int a = 5;
	myPFuncType Func;
	//Func = &add; //加不加取地址号都可以 为什么呢??????
	Func = add;
	cout << Func(a) << endl;
	return 0;
}
输出结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值