2008年7月28日星期一

数组和指针的区别

今天看了篇文章,讲得是数组和指针的区别,将理解记录一下。
在编译时,数组表现为一个数据结构,而指针为另一种数据,只表示一个地址。
数组在编译时需要记录很多别的信息,所以sizeof(编译时函数)能得到整个数组的占用的内存大小,而sizeof的参数为指针时就只能的到4(win32中指针占4个内存)
但是当数组作为参数传递时,他除了首地址之外的所有信息
即:functionName(type[] array){cout << sizeof(array);}结果将为4!
而且array++也正确(没验证)
想法:编译时将参数中的数组换成了同种类型的指针(程序员透明),所以此后的数组其实为指针,数组的一些特性就丢失了,比如可以得到数组的长度。
问题:
1、想法是否是正确的。
2、数组的长度信息,除了sizeof之外还有什么地方会用到?

没有评论: