源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

浅谈关于指针作为参数并改变它的值的问题

  • 时间:2020-12-28 17:59 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:浅谈关于指针作为参数并改变它的值的问题
[u]复制代码[/u] 代码如下:
#include<stdio.h> int f(int *p){     p = p+1;     return printf("%d\n",*p); } void main(){     int a[]={1,2};     int *p = a;//指针p是首地址     f(p);//调用     printf("%d",*p);//p的值是不会改变的 }
结果: 2 1 Press any key to continue
[u]复制代码[/u] 代码如下:
#include<stdio.h> void z(int *p){     p = p+1;     *p = 100; } void mian(){     int a[] = {1,2};     int *p = a;     z(p);//调用     printf("a[1]=%d",*(p+1));//指针(p+1)所指向的内存空间中的值改变了 }
结果: a[1]=100 Press any key to continue   通过上下这两个例子可以得出结论,指针作为参数被传递的时候,在其它函数中不能改变它的值(这个指针指向的地址),却能改变这个指针 指向的地址中的值。   所以想要实现两个一级指针里的值交换,需要利用二级指针来实现:(指针q指向a,指针p指向b,实现q指向b,p指向a)
[u]复制代码[/u] 代码如下:
#include<stdio.h> void exchange(int **x,int **y){     int *temp;     temp = *x;//*x=*qq=&a     *x = *y;     *y = temp; } void main(){     int a =100;     int b = 12; //定义指针     int *q = &a;     int *p = &b;     int **qq = &q;     int **pp = &p; //输出     printf("q=%p\n",q);     printf("p=%p\n",p);     //调用函数,进行转换     exchange(qq,pp);     printf("========改变以后的==========\n");     printf("q=%p\n",q);     printf("p=%p\n",p); }
结果: q=0012FF44 p=0012FF40 ========改变以后的======== q=0012FF40 p=0012FF44 Press any key to continue
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部