c语言指针做实参函数调用 实参指针变量的值

为什么c语言不能通过执行调用函数来改变实参指针变量的值

首先,这个不是指针函数 ,void *ptr(int * x,int * y ,int * z);才是指针函数。指针函数是函数,只是函数返回的是个指针(地址)。

创新互联公司是一家专注于网站设计制作、网站设计与策划设计,屏南网站建设哪家好?创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:屏南等地区。屏南做网站价格咨询:18982081108

void swap(int p1,int p2){int p;p=p1;p1=p2;p2=p;} 只是交换了值而已。。同你的那个,只是交换了pp2所代表的地址而已,真正的地址不会因此交换的。正道还是以改变实参指针变量所指变量的值 。没办法。

C所有的函数调用都是将实参的值“拷贝”给形参,所以指针也不例外。函数中改变形参指针的值改变的只是形参指针的指向,函数退出后都销声匿迹了,与实参指针无关。

4 所以,通常意义上函数内部无法改变实参的指针。但是有一些技巧可以曲线完成你要的效果,例如实参是指针,其值是自身的地址。那么相当与一个二级指针的访问。这样就可以通过这种方式修改实参的指针。

s1,s2)中的s1,s2就相当于上面那定义函数的x,y.而在指针中,char*s1,char*s其代表的就是首地址。所以交换的是两个数组中第一个元素,即s1[0],s2[0],所以就是a和1交换了,其他的不变,按原来的输出。

c语言中指针作为实参使用SWAP函数的问题。

c语言中形参与实参的关系是:形参是实参的值副本。无论参数的类型是什么,传递到子函数中的形参只是实参的值。所以,在改变形参变量自身的值时,是与实参无关的。换句话说,形参的改变不会影响到实参。

进入函数后,函数创建几个空间给形参,再把实参数值拷过来。退出函数时,把形参空间释放,则影响不到实参。这就是值传递。

使用strcpy呗,反正你用gets读入的,最后都会有\0吧。void swap(char *a,char *b){ char temp[20]; strcpy(temp, a); strcpy(a, b); strcpy(b, temp);}这样试试。

C语言指针传参,目的是通过子函数交换实参地址,实现形参和实参的双向传...

1、我们提出的双向传递是,通过把原来的当做实参变量的地址当做实参传入函数,在函数内部通过修改指针形参指向的地址来把值传递出函数;作为变量地址的实参依然不可能在函数内部被修改。

2、函数实参与形参之间的数据传递方式是( 值传递)传递方式,在C语言中,数据传递方式有值传递和引用传递,值传递:传值,实际是把实参的值赋值给行参,相当于copy。那么对行参的修改,不会影响实参的值 。

3、你的第一个代码,主函数里定义的a不会释放,所以可以正常输出;但第二个代码中,shuru()函数返回a的地址后,a所占的空间被释放,所以shuchu(x)是一个随机值。改成全局变量吧。

4、当进行指针传递的时候,形参是指针变量,实参是一个变量的地址或者是指针变量,调用函数的时候,形参指向实参的地址; 指针传递中,函数体内可以通过形参指针改变实参地址空间的内容。


当前标题:c语言指针做实参函数调用 实参指针变量的值
文章分享:http://myzitong.com/article/dccipie.html