最新消息:点击查看大S的省钱秘笈

C/C++:有关数组形参的探究

编程相关 Slyar 61浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

今天研究了一下sizeof,之前一直以为它是函数,因为它有参数也有返回值,不过今天发现sizeof实际上是一个...恩,算是运算符吧,或者说他是一个宏,因为他是在编译时确定值的,而表达式中的任何运算和函数调用都不会发生。不过有一个例外是C99支持的不定长数组,这时会计算不定长数组的长度。

废话少说,先看一段代码,今天测试sizeof的时候发现的。

代码运行的结果是

40
4
40

第一个结果不解释了,就是数组所占的内存空间。

第三个结果也不解释了,引用就表示数组本身,也是数组所占的内存空间。

关键来看一下第二个结果。在C语言中,数组名是被当成指针来处理的,具体来讲数组名就是指向数组首元素地址的指针,因此,当数组名被当成参数传递到函数中时,数组名会自动转变成指针,所以此时sizeof的结果就是指针所占的内存大小,在32位系统下就是4

另一个概念,C语言的编译器遇到数组元素array[i],就会替换成*(array+i)的形式。

转载请注明:Slyar Home » C/C++:有关数组形参的探究

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 我再一次找不到插话的机会了
    Jutoy7年前 (2010-04-25)回复