在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在看排序,首先是插入排序,思路理清后想用代码实现,然后问题来了: int array[] = {18,10,15,7,1};
int array_length(int a[]){ int len = sizeof(a)/sizeof(a[0]); return len; } 然而在主函数中调用的结果并不是5 ,而是8 。 #include <iostream> int main(int argc, const char * argv[]) { int array[]={18,10,15,7,1}; int len = sizeof(array)/sizeof(a[0]); cout<<len<<endl; }
参数的传递是将实参的值赋给形参。然而对于数组来说却是一个例外,因为数组的数据太多了,将其一一赋值既麻烦又浪费空间,所以数组作为参数传递给函数的只是数组首元素的 地址,函数在需要用到后面元素时再按照这个地址和数组下标去查找。也就是说后面的元素根本没到函数里来,所以在函数里求不出数组的大小也就不足为奇了。
/******因此写形式参数时既可以 int array_length(int a[]){ return 0; } *******/ /*******也可以 int array_length(int *a){ return 0; } *******/
#include <iostream> void length(int a[]){ cout<<sizeof(a[0])<<endl; cout<<*a++<<endl; cout<<*a++<<endl; cout<<*a++<<endl; } int main(int argc, const char * argv[]) { int a[]={65,66,67,68,1,1,2,10,15,7,1}; length(a); return 0 } //输出的结果是 // 4 // 65 // 66 // 67 输出结果显示,子函数内还是按照首地址以及数组类型的长度来递增。 Solution 1.1:
1). mac如何显示是 32位/64位机器: 2). 32位机指针为什么是4个字节 64位与32位机的区别
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论