1、sizeof(数组名),在作为实参和形参阶段使用时,得到的大小不同
void insertSort(int arrays[]){
cout << sizeof(arrays) << endl;//②:结果为4
}
int _tmain(int argc, _TCHAR* argv[])
{
int arrays[] = {2,3,1,6};
cout << sizeof(arrays) << endl;//①:结果为16
insertSort(arrays);
system("pause");
return 0;
}
解答一:
数组名 在传递后 退化为指针。
sizeof 数组 得到数组的大小。sizeof 指针 得到指针的大小(而不是指针指向的数据的大小)
解答二:
void insertSort(int arrays[]){
cout << sizeof(arrays) << endl;//②:结果为4
}
这里的 arrays 相当于int*,所以sizeof的结果是4。
在main函数中
这里的arrays是数组名称,因此sizeof的结果是数组的大小。
问题的关键:执行insertSort的时候发生了一个类型转换。