数组的数组"、"数组的指针"、"指针的数组"和"指针的指针"的关系

<<Expert C Programming>>第9、10两章讲到数组和指针,这里就数组的数组、数组的指针、指针的数组和指针的指针的关系做个总结。

 

1.概念

C语言中的二维数组即数组的数组,eg: char a[2][3] ;

数组的指针即数组指针,eg: char (*a)[3];a是指向一个二维数组的指针

指针的数组即指针数组,eg: char *a[3]; a是一维数组,里面的类型是char*

指针的指针即二维指针,eg: char **a;

2.关系

2.1 在表达式中,数组名可以被改写成指针,改写的规则是:数组“最里面一层”的下标改成“*”;在表达式中,指针不能改写为数组名。

数组的数组可以赋给数组的指针;eg: char a[2][3]; char (*a1)[3] = a;

指针的数组可以赋给指针的指针;eg: char *a[3]; char **a1=a;

2.2 当"数组的数组"、"数组的指针"、"指针的数组"和"指针的指针"这四种类型作为函数的形参时,情况有所不同:

当函数的形参是“数组的数组”时,实参可以是"数组的数组"或者"数组的指针" ;

当函数的形参是“数组的指针”时,实参可以是"数组的数组"或者"数组的指针" ;

当函数的形参是“指针的数组”时,实参可以是"指针的数组"或者"指针的指针" ;

当函数的形参是“指针的指针”时,实参可以是"指针的数组"或者"指针的指针" ;

也就是说:数组的数组和数组的指针可以双向改写, "指针的数组"或者"指针的指针" 可以双向改写,原因是:当数组出现在函数形参中时,数组名就是指向数组第一个元素的指针。

3.测试用例

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值