本质上说,C语言的参数传递都是传值的,所以实参都不会改变。有一种情况可以理解成实参的改变:如果形参接收的是指针,而实参传递的是地址,在函数内部对该地址中的内容进行了改变,看起来就是修改了实参的值。
成都创新互联公司专注于文安网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供文安营销型网站建设,文安网站制作、文安网页设计、文安网站官网定制、小程序定制开发服务,打造文安网络公司原创品牌,更为您提供文安网站排名全网营销落地服务。
调用函数,只能改变指针指向的内存空间的内容,不能改变实参指针变量的值。我觉得题主对指针变量,还算有一点了解。指针变量,其实也就是一个变量,但它的值是一块内存的地址。
形参和实参如果都是地址(即指针)时,会发生改变形参即可改变实参的情况,因为这时形参和实参实际上是对应同一段内存的数据。
传递值的时候不影响实参 传递指针的时候能够影响实参。
c语言中形参与实参的关系是:形参是实参的值副本。无论参数的类型是什么,传递到子函数中的形参只是实参的值。所以,在改变形参变量自身的值时,是与实参无关的。换句话说,形参的改变不会影响到实参。
C所有的函数调用都是将实参的值“拷贝”给形参,所以指针也不例外。函数中改变形参指针的值改变的只是形参指针的指向,函数退出后都销声匿迹了,与实参指针无关。
1、void f(int *q){ q=(int *)0XFFFFFFFF; //这里修改的是函数中形参q这个临时变量的值。
2、void f(int *q){ q=(int *)0XFFFFFFFF;} 你这样改的是q的值 在这种情况下改值 必须知道需要改的值的变量地址才行。
3、但,如果参数类型是指针类型,则可以通过对指针变量所指向的地址中的数据进行修改,达到改变实参地址中的数据目的。
4、函数的形参是值传递,形参只是实参的一个值的拷贝,修改形参不会影响到实参的值。因此,scanf中必须传递一个指向实参的指针,也就是实参的地址,通过它去修改实参的值。如果直接传递实参的值是无法通过输入给实参赋值的。
5、可以传递指针作为参数。如:使用swap(a,b)实现交换a、b两个实参的值。
1、形参和实参如果都是地址(即指针)时,会发生改变形参即可改变实参的情况,因为这时形参和实参实际上是对应同一段内存的数据。
2、这里实参自然不会变化,你这么理解,实参是实际参与到函数计算中的参数,但你这里函数的返回值中,并不包含输入实参的变化,固实参是无变化的。
3、c语言中数组名作为实参传给被调用的函数时,形参获得的是数组的起始地址。还是用例子说话吧。
4、c语言中形参与实参的关系是:形参是实参的值副本。无论参数的类型是什么,传递到子函数中的形参只是实参的值。所以,在改变形参变量自身的值时,是与实参无关的。换句话说,形参的改变不会影响到实参。
5、实参是不会受到形参的影响的。就算传指针,也只是改变指针指向的值而已。