Hayır, aralarında fark yoktur. Ben IDA ikili dosyanın hem çağıran versiyonlarının .exe içinde ana fonksiyonunu sökerken
#include <stdio.h>
void function(int* array) {
int a =5;
}
void main() {
int array[]={2,4};
function(array);
getch();
}
ben de aynı montaj kod aşağıda gibi olsun: (mingw) derleyici ++ Ben Dev C bu C kodu yazdım sınamak için :
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
Yani bu çağrının iki sürümü arasındaki fark, en azından derleyici tehditler onları eşit vardır.
(En azından biraz daha eski) MSVC C++ derleyicileri kullanırken, derleyicinin işlev adının iki durumda farklı şekilde yanlış bir şekilde yönetilmesi nedeniyle bir fark vardır (başka türüyle aynı olduklarını kabul ederken), bağlantı sorunlarıyla sonuçlanır. Hata raporunu burada göremezsiniz http://connect.microsoft.com/VisualStudio/feedback/details/326874/inconsistent-name-mangling-for-functions-accepting-array-and-pointer-parameters – greggo