守着一只汪
不,他们之间没有区别。为了进行测试,我在Dev C+(明火)编译器中编写了这个C代码:#include <stdio.h>void function(int* array) {
int a =5;}void main() {
int array[]={2,4};
function(array);
getch();}当我拆开主函数在IDA中调用二进制文件的两个版本的.exe中得到完全相同的汇编代码,如下所示:push ebp
mov ebp, esp
sub esp, 18hand esp, 0FFFFFFF0hmov eax, 0add eax, 0Fhadd eax, 0Fhshr eax, 4shl eax, 4mov [ebp+var_C], eax
mov eax, [ebp+var_C]call sub_401730
call sub_4013D0
mov [ebp+var_8], 2mov [ebp+var_4], 4lea eax, [ebp+var_8]mov [esp+18h+var_18], eax
call sub_401290
call _getch
leave
retn因此,这个调用的两个版本没有区别,至少编译器对它们的威胁是相等的。