数组名以地址 作为参数传递,函数执行后会修改原先数组值,传地址
#include <iostream>
int data[2][2]={ {1,1},{2,22}};
using namespace std;
int sum(int d[][2],int x)
{
d[0][1]=666;
return d[1][x];
}
int main()
{
int x=sum(data,1);
int x1=data[0][1];
cout<<x1<<endl;
return 8;
}
//*********************
.file "b06.cpp"
.local _ZStL8__ioinit
.comm _ZStL8__ioinit,1,1
.globl data
.data
.align 16
.type data, @object
.size data, 16
data:
.long 1
.long 1
.long 2
.long 22
.text
.globl _Z3sumPA2_ii
.type _Z3sumPA2_ii, @function
_Z3sumPA2_ii:
.LFB971:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movq %rdi, -8(%rbp)
movl %esi, -12(%rbp)
movq -8(%rbp), %rax
movl $666, 4(%rax)
movq -8(%rbp), %rax
leaq 8(%rax), %rdx
movl -12(%rbp), %eax
cltq
movl (%rdx,%rax,4), %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE971:
.size _Z3sumPA2_ii, .-_Z3sumPA2_ii
.globl main
.type main, @function
main:
.LFB972:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $16, %rsp
movl $1, %esi
movl $data, %edi
call _Z3sumPA2_ii
movl %eax, -4(%rbp)
movl data+4(%rip), %eax
movl %eax, -8(%rbp)
movl -8(%rbp), %eax
movl %eax, %esi
movl $_ZSt4cout, %edi
call _ZNSolsEi
movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
movq %rax, %rdi
call _ZNSolsEPFRSoS_E
movl $8, %eax
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE972:
.size main, .-main
.type _Z41__static_initialization_and_destruction_0ii, @function
_Z41__static_initialization_and_destruction_0ii:
.LFB978:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $16, %rsp
movl %edi, -4(%rbp)
movl %esi, -8(%rbp)
cmpl $1, -4(%rbp)
jne .L5
cmpl $65535, -8(%rbp)
jne .L5
movl $_ZStL8__ioinit, %edi
call _ZNSt8ios_base4InitC1Ev
movl $__dso_handle, %edx
movl $_ZStL8__ioinit, %esi
movl $_ZNSt8ios_base4InitD1Ev, %edi
call __cxa_atexit
.L5:
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE978:
.size _Z41__static_initialization_and_destruction_0ii, .-_Z41__static_initialization_and_destruction_0ii
.type _GLOBAL__sub_I_data, @function
_GLOBAL__sub_I_data:
.LFB979:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $65535, %esi
movl $1, %edi
call _Z41__static_initialization_and_destruction_0ii
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE979:
.size _GLOBAL__sub_I_data, .-_GLOBAL__sub_I_data
.section .init_array,"aw"
.align 8
.quad _GLOBAL__sub_I_data
.hidden __dso_handle
.ident "GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-11)"
.section .note.GNU-stack,"",@progbits