首页 > 编程语言 > 详细

C语言里的指针探析——type *name[] 在函数参数里面,其实是一个二维指针

时间:2015-10-19 12:28:28      阅读:198      评论:0      收藏:0      [点我收藏+]

个人的看法,经过自己编写代码验证和思考。通过这样的思考,让自己编写与阅读C代码完全没有任何障碍。

type *name[] 在函数参数里面声明和不在函数里面声明其实不一样。

type *name[] 如果在函数声明里,则name 是一个二维指针,并不是一个指针数组。这可以通过sizeof 来确认。

 

void func(char *name[])
{
    printf("%d\n", sizeof(name);
}
char *str[] = {" we", "are", "good\n"};

func(str); // 输出4

通过输出4可以知道name 一个指针,而不是数组,不然为什么sizeof 的结果不是指针数组的大小,也就是12( 4 *3)。

下图是我的理解示意图

技术分享

至于指针运算,像 *(*name +1) name[2][2]得到什么结果,是其他的话题了。

 

C语言里的指针探析——type *name[] 在函数参数里面,其实是一个二维指针

原文:http://www.cnblogs.com/celthi/p/4891378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!