C/C++数组指针、指针数组、函数指针、函数指针数组的用法

34 篇文章 0 订阅

指针数组,数组中的元素都是指针的数组;
数组指针,指向数组的指针变量,下文有示例;
指针常量,形如 int* const p;//p是一个常量,一经初始化,便不能再指向其他变量;
常量指针,即指向常量的指针,比如:const int* p;//p指向的是常量,不能通过*p修改其值;

#include <stdio.h>

void fun1(int(*pArr)[3], int row)
{
	int i, j;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < 3; j++)
			printf("%d ",pArr[i][j]);
		printf("\n");
	}
}

void f1(){ printf("f1\n"); }
void f2(){ printf("f2\n"); }
void f3(){ printf("f3\n"); }

int main()
{
	//数组指针,即指向数组的指针变量,注意int* p;这个p只是指向一个int型变量,但不是指向一个数组
	int(*pArr)[3];
	int a1[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
	pArr = &a1[0];//也可以简写成pArr=a1;这和int* p;int a[3];p=a;类似
	int a2[2];
	printf("pArr=%p,pArr+1=%p\n", pArr, pArr + 1);//相差了12个字节
	printf("a2=%p,a2+1=%p\n", a2, a2 + 1);//相差4个字节

	//指针数组,是一个数组,数组中的元素都是指针
	char* pStr[2];

	//函数指针,指向函数的指针变量
	void(*pFn)(int(*pArr)[3], int row) = fun1;//省略了&
	pFn(a1, 3);//省略了*号

	//函数指针数组,数组中的元素是函数指针类型
	void(*fn[3])() = {f1,f2,f3};
	fn[0]();
	fn[1]();
	fn[2]();

	getchar();
	return 0;
}

输出:
pArr=003AFCF0,pArr+1=003AFCFC
a2=003AFCE0,a2+1=003AFCE4
1 2 3
4 5 6
7 8 9
f1
f2
f3

总结如下:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值