我想知道这些函数定义是相等的,即没有区别吗?
void fun1(int **X){....}
void fun2(int **&X){....}
int main(){
.....
fun1(Array);
fun2(Array);
.....
}
还是有些改变?
答案 0 :(得分:1)
定义显然是不同的,功能上的差异将极大地取决于功能的实现方式。将参数传递给 .data
array: .space 10
prompt: .asciiz "Enter an integer (0 to quit) :"
text: .asciiz "After sorting, the list of integers is:"
.text
.globl main
main:
la $a1, array
read_numbers:
# Rest of code omitted for brevity...
beqz $v0, sort
j read_numbers
sort:
la $a1, $array
li $v0, 4
la $a0, text
syscall
loop:
lw $t0, 0($a1)
addiu $a1, $a1, 4
beqz $t0, done
li $v0, 1
move $a0, $t0
syscall
j loop
然后写入函数体内的参数将写入引用的内存位置,同时将相同参数传递给fun2
并写入函数体内因为传递的参数只是在不同内存位置的副本,所以将保留原始参数不变。