数组名的传递
1 | void t(int* a){ |
很明显cout的那么两行,是同样的,但为什么输出一个是8,一个20呢?我们已知64位的gcc中一个pointer是由8bytes的。所以,传递数组名(地址)给函数,sizeof计算的是a的指针大小,不是整个数组的大小。
此技巧仅适用于数组,不适用于指针:
1 | sizeof(b) / sizeof(b[0]) |
1 | void t(int* a){ |
很明显cout的那么两行,是同样的,但为什么输出一个是8,一个20呢?我们已知64位的gcc中一个pointer是由8bytes的。所以,传递数组名(地址)给函数,sizeof计算的是a的指针大小,不是整个数组的大小。
此技巧仅适用于数组,不适用于指针:
1 | sizeof(b) / sizeof(b[0]) |