VS中,C语言中,为什么定义函数操作形参对实参有影响?
发布网友
发布时间:2022-05-01 09:25
我来回答
共1个回答
热心网友
时间:2022-06-27 12:04
这是因为默认情况下,函数的参数传递方式都是传址的,换句话说形参和实参指向的都是同一个内存地址,函数内部对形参的操作,实际上就是在操作这个内存地址,所以最终实参的值也会被改变。
就好比你把你的银行卡号告诉另一个人,然后你自己在本地银行存一笔钱,另一个人在千里之外的另一个银行也存一笔钱到这个卡号,表面上看你们两个的存钱操作好像风马牛不相及,但实际上不都是操作同一个账户吗?而银行卡号不就相当于上面所说的内存地址吗?你的存钱动作就相当于buf[strlen(buf) - 1] = 0,另一个人的存钱操作则相当于 cls(buf)