c语言改变函数指针的值 c语言指针修改数组值

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

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

我们提供的服务有:成都做网站、成都网站制作、成都外贸网站建设、微信公众号开发、网站优化、网站认证、岳池ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的岳池网站制作公司

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

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

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

就是在调用函数的时候,如果在被调用的函数里面,只改变的是形参的值,是不会影响实参的。

因为指针是作为参数传递给函数的,传递的是指针指向的值。其本身并没有传递给函数。

C语言指针变量可以用指向此变量的指针修改其值?

定义const 变量,这个可能会有问题。。在vc下被编译器报error 了。

是的,如果一个指针指向一个变量的地址,那么它们是在同一个内存地址的,操作指针所在的值就是操作变量的值,参数为指针就是指向你填入参数的地址,操作的是同一个东西。

但,如果参数类型是指针类型,则可以通过对指针变量所指向的地址中的数据进行修改,达到改变实参地址中的数据目的。

可以,但int *p;*p=7;这样不行。因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。

pa=句是将指针*pa指向变量a。pa存放的是a的地址,*pa其实就是a,可以理解为把a换了一个名字表示。*pa=20就是对a进行赋值操作,等于a=20;a的值当然改变了。

c语言如何通过指针来改变所指向的值

void main(void){ const int a=5; //在之前a并没有分配内存,而是将其值放入了常量表中,并建立了对应关系,以后用到a的时候直接去常量表中查询。const变量应该跟一般变量是分开放的。

如果函数参数直接传递的是指针类型,那么在函数内改变指针指向,并不能影响函数外的指针实例。只有传入指针的指针,才能改变指针的指向。函数里的形参是一般变量,在函数里面改变变量的值,不会改变主函数里实参的值。

声明一个指向具有5个元素的数组的指针,即int (*p)[5];,然后写p=a;,那么第5行第4列的元素就是(p+4)[3],如果写(p+4)[3]=20;,就把原来的4改写成20了(若写p+=4;p[3]=20;效果也一样)。

pa=句是将指针*pa指向变量a。pa存放的是a的地址,*pa其实就是a,可以理解为把a换了一个名字表示。*pa=20就是对a进行赋值操作,等于a=20;a的值当然改变了。

参数必须是指针类型,指向待交换的数据 交换时,必须交换地址中的数据,而不是交换地址本身。

初始值为10int *p = // 定义一个指针p,并让这个指针指向变量x*p = 100; //通过指针p,对x进行赋值。


文章标题:c语言改变函数指针的值 c语言指针修改数组值
链接地址:http://csdahua.cn/article/dejhpps.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流