c语言函数无法改变数值 c语言中不能改变的量
懂C语言的进,指针函数用了最后交换不了数值
1、首先,这个不是指针函数 ,void *ptr(int * x,int * y ,int * z);才是指针函数。指针函数是函数,只是函数返回的是个指针(地址)。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了渭滨免费建站欢迎大家使用!
2、C语言的函数形式参数是函数的局部变量,你把实参地址值传给形参指针,在函数中交换只在函数中起作用,影响不到主调函数中实参指针的值。
3、少年,指针不会就尽量不要乱用。指针指向的是地址。不是值。。你只是换了值。但是指针指向的地址没有换,当然输出的还是不变的喽。初学者不推荐使用指针。
4、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
5、在jiaohuan函数中,你所做的交换只是对指针进行赋值,并没有交换指针指向的数据,所以也完成不了交换任务。jiaohuan函数的返回值为int型指针,但该函数中并没有返回一个指针变量。
6、函数返回后,这两个变量被舍弃,函数调用也没有将这两个临时变量的值返回给main函数中调用使用的参数功能。所以,在函数中要操作调用者申请的变量,需要给出它们的指针,函数中用指针来找到这些变量的位置和内容。
为什么c语言不能通过执行调用函数来改变实参指针变量的值
首先,这个不是指针函数 ,void *ptr(int * x,int * y ,int * z);才是指针函数。指针函数是函数,只是函数返回的是个指针(地址)。
void swap(int p1,int p2){int p;p=p1;p1=p2;p2=p;} 只是交换了值而已。。同你的那个,只是交换了pp2所代表的地址而已,真正的地址不会因此交换的。正道还是以改变实参指针变量所指变量的值 。没办法。
C所有的函数调用都是将实参的值“拷贝”给形参,所以指针也不例外。函数中改变形参指针的值改变的只是形参指针的指向,函数退出后都销声匿迹了,与实参指针无关。
4 所以,通常意义上函数内部无法改变实参的指针。但是有一些技巧可以曲线完成你要的效果,例如实参是指针,其值是自身的地址。那么相当与一个二级指针的访问。这样就可以通过这种方式修改实参的指针。
C语言调用函数后,为什么实参的值没有发生改变?
C语言整型、实型数据,如果以变量名称作为参数,系统规定的处理方式就是:实际参数仅决定形式参数的初值,形式参数在子函数内部的操作与实际参数无关。
调用函数,只能改变指针指向的内存空间的内容,不能改变实参指针变量的值。我觉得题主对指针变量,还算有一点了解。指针变量,其实也就是一个变量,但它的值是一块内存的地址。
如果通过函数传参方式调用,并且不是传的指针,那就不会改变原来的值,如果想改变全局变量的值,可以直接在函数中使用,不需要传参。
变量的形参是在内存里新的空间里复制一份实参的值进行操作,但不改变实参的值,就比如看到青蛙A想试试蛙肉好吃不?于是你找了一只青蛙B来试吃,结果不错,青蛙B是死了,但是A还好好的,一样的道理。
实参到形参的值的传递,可以这样理解,实参是的本人,形参是你的照片。在函数调用中,形参的值发生改变,就像有人在照片你的鼻子上做了记号,但实参你本人的鼻子上并不会有记号。
标题名称:c语言函数无法改变数值 c语言中不能改变的量
文章路径:http://myzitong.com/article/degdgcg.html