不,他们之间没有区别。为了测试我在Dev C ++(mingw)编译器中编写了这个C代码:
#include
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, 18h
and esp, 0FFFFFFF0h
mov eax, 0
add eax, 0Fh
add eax, 0Fh
shr eax, 4
shl eax, 4
mov [ebp+var_C], eax
mov eax, [ebp+var_C]
call sub_401730
call sub_4013D0
mov [ebp+var_8], 2
mov [ebp+var_4], 4
lea eax, [ebp+var_8]
mov [esp+18h+var_18], eax
call sub_401290
call _getch
leave
retn
所以这个调用的两个版本没有区别,至少编译器会同等地威胁它们。