C语言函数不改变形参内容的说明 C语言函数不改变形参内容是指在函数调用过程中,形参的内容不会被改变。这是因为在函数调用过程中,形参是通过值传递的方式传递给函数的,而不是通过引用传递的方式。因此,在函数内部对形参的修改不会影响到函数外部的变量。 在上面的例子中,fill_buffer函数的参数是指针p,但是函数内部对p的修改并不会影响到main函数中的变量p。这是因为在函数调用过程中,p的值被复制了一份,并传递给fill_buffer函数。在fill_buffer函数内部,对p的修改只是对临时变量的修改,而不是对main函数中的变量p的修改。 这也是为什么在位置(1)(2)(3)指针p的值均为&data_buf[0],而不是被修改后的值的原因。因为在fill_buffer函数内部,对p的修改只是对临时变量的修改,而不是对main函数中的变量p的修改。 此外,这也解释了为什么C语言函数可以使用指针作为输入输出参数,而变量只能作为输入参数的原因。因为指针可以用来读取和写入地址内容,而变量只能用来供函数使用,不能将函数中的值反存到变量中。 在汇编语言中,这个过程可以用以下代码来表示: ;lda x 为把x装到A中 ;sta x 为把A的内容存到装x中 ;得到第一个参数lda p sta buf_para ;得到第二个参数lda #0 sta data_para ;得到第三个参数lda #100 sta size_para ;跳转到具体函数代码位置jsr fill_buffer 从这个流程可以看出指针p实际上没有被改写,虽然p所指的位置会被函数写入指定的内容,函数只是从p得到一个起始地址,在函数内部是通过另外一个指针来改写这个地址开始位置的内容,在调试中观察到的写指针是另外那个指针,并不是p。 因此,在C语言中,函数的参数可以是指针,但是函数内部对指针的修改不会影响到函数外部的变量。这是C语言函数的基本特性之一。
- 粉丝: 7
- 资源: 923
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页