C语言中,实参与形参传递方式有哪些常见问题?

2026-05-08 13:272阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1976个文字,预计阅读时间需要8分钟。

C语言中,实参与形参传递方式有哪些常见问题?

函数中参数的传递

这里说的传递当然是指 实参是如何传递给形参的啦

还挺复杂的~~~~~~~~⊙﹏⊙b汗,这里讲述了4种参数传递的情况和注意事项:

1.非引用形参

这是最普通,也是最简单的形参传递了。

参数传递,即是使用实参副本(注意啊,是副本,不是实参本身)来初始化形参;

因此,在函数体内对形参的修改不会影响实参的值。

如果形参是指针类型的,那么函数体内是否可以修改指针所指向的对象的值呢?

如果您产生这样的疑问,表示您很有想法~~~

答案是~~~需要分情况讨论。

如果函数的形参是非const类型的指针,则函数可以通过指针实现赋值,修改指针所指向对象的值。

所以,如果需要保护指针指向的值,则形参需定义为指向const对象的指针(注意了,这里的指针依然是非const型的,只是其指向的对象是const型的):

void use_ptr(const int *p) { //use_ptr这个函数可以读指针p所指向的对象,但是不可以修改该对象的值 }

const形参

如果函数使用的是非引用非const形参,则既可以给该它传递const实参,也可传递非const实参。

如果函数使用的是非引用const形参,也是既可以给该它传递const实参,也可传递非const实参。那么这两者的差别是什么呢?对于后者,函数连实参的局部副本都不可以改变了。

阅读全文

本文共计1976个文字,预计阅读时间需要8分钟。

C语言中,实参与形参传递方式有哪些常见问题?

函数中参数的传递

这里说的传递当然是指 实参是如何传递给形参的啦

还挺复杂的~~~~~~~~⊙﹏⊙b汗,这里讲述了4种参数传递的情况和注意事项:

1.非引用形参

这是最普通,也是最简单的形参传递了。

参数传递,即是使用实参副本(注意啊,是副本,不是实参本身)来初始化形参;

因此,在函数体内对形参的修改不会影响实参的值。

如果形参是指针类型的,那么函数体内是否可以修改指针所指向的对象的值呢?

如果您产生这样的疑问,表示您很有想法~~~

答案是~~~需要分情况讨论。

如果函数的形参是非const类型的指针,则函数可以通过指针实现赋值,修改指针所指向对象的值。

所以,如果需要保护指针指向的值,则形参需定义为指向const对象的指针(注意了,这里的指针依然是非const型的,只是其指向的对象是const型的):

void use_ptr(const int *p) { //use_ptr这个函数可以读指针p所指向的对象,但是不可以修改该对象的值 }

const形参

如果函数使用的是非引用非const形参,则既可以给该它传递const实参,也可传递非const实参。

如果函数使用的是非引用const形参,也是既可以给该它传递const实参,也可传递非const实参。那么这两者的差别是什么呢?对于后者,函数连实参的局部副本都不可以改变了。

阅读全文