c语言指针数组和数组指针引用传递,将数组和数组指针传递给C中的函数之间的区别...

博主通过实例验证了在DevC++(mingw)编译器中,不同版本的函数调用在二进制级别上是否产生相同汇编代码。通过对.exe文件进行反汇编,结果显示两种调用方式的汇编代码完全一致,说明编译器对待它们的方式是等价的。
摘要由CSDN通过智能技术生成

不,他们之间没有区别。为了测试我在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

所以这个调用的两个版本没有区别,至少编译器会同等地威胁它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值