C语言:浅谈各种复杂的声明

初学者在面对各种复杂的声明面前往往不知所措,甚至可以说一头雾水,不知道从何下手,本文就C语言中各种复杂的声明浅谈一下,希望可以帮助到初学者,下次再遇到复杂的声明时不在迷茫。

我们先来了解一下复杂的声明的一些符号

符号含义
*表示一个指针
( )表示一个函数
[ ]表示一个数组

下面是一些较复杂的声明示例:
如果能够把下面的例子都看懂的话,那说明你很优秀哦~

1.int board[8] [8];	 	//声明一个内含int数组的数组
2.int ** ptr;		    //声明一个指向指针的指针,被指向的指针指向int
3.int * risks[10];		//声明一个内含十个元素的数组,每个元素都是一个指向int的指针
4.int (* rusks)[10];	//声明一个指向数组的指针,该数组内含十个int类型的值
5.int * oof[3] [4];		//声明一个3*4的二维数组,每个元素都是指向int类型的指针
6.int (* uuf)[3] [4];	//声明一个指向3*4二维数组的指针,该数组中内含int类型的值
7.int (*uof[3])[4];		//声明一个3个指针元素的数组,其中每个指针都指向一个内含4个int类型元素的数组

要看懂以上声明,关键要理解 * 【】 ()的优先级。要记住,()【】的优先级相同且大于的优先级,并且()【的结合方向是从左向右。

接下来我们逐个来进行分析:
1.int board 【8】【8】 ;
根据优先级,board先与【8】结合,说明这是一个数组,再与【8】结合,说明这是一个数组的数组,也就是二维数组。

2.int ** ptr;
根据优先级,ptr先与星号结合,说明这是一个指针,再与星号结合说明这是一个指向指针的指针,也就是二级指针。

3.int * risks[10];
根据优先级,ricks先与【10】结合,所以这是一个数组,再与星号结合,说明数组中的元素是指针变量。也就是指针数组

4.int (* rusks)[10];
根据优先级,rusks先与星号结合,说明这是一个指针,再与【10】结合,说明这是一个指向数组的指针,也就是数组指针

5.int * oof[3] [4];
根据优先级,oof先与【3】结合,说明这是一个数组,再与【4】结合说明这是一个数组的数组,也就是二维数组,再与星号结合,说明二维数组中的每个元素都是指针变量。

6.int (* uuf)[3] [4];
根据优先级,uuf先与星号结合,说明这是一个指针,再与【3】结合,说明这是一个指向数组的指针,再与【4】结合,说明只这是一个指向一个二维数组的指针。

7.int (*uof[3])[4];
根据优先级,uof先和【3】结合,说明这是一个数组,再和星号结合,说明数组中的元素是指针变量,再和【4】结合,说明其中每个指针都指向一个内含4个int类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值