|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请问: 3个指针变量的值改变了嘛?
是不是没改变 ,只是改变了所指变量的值。
另外请问 指针变量的值和 指针变量所指的变量的值 有什么具体解释吗 感觉很绕
输入三个数 要求从大到小输出,函数实现;
- #include <stdio.h>
- void pointer(int*,int*,int*);
- void pointer(int*p1,int*p2,int*p3)//
- { extern void swap(int*x,int*y);//
- if(*p1<*p2) swap(p1,p2);
- if(*p2<*p3) swap(p2,p3);
- if(*p1<*p2) swap(p1,p2);
- }
- void swap(int*x,int*y)//
- {
- int temp;
- temp=*x;
- *x=*y;
- *y=temp;
- }
- int main()
- {
- int*z1,*z2,*z3;
- int a,b,c;
- scanf("%d%d%d",&a,&b,&c);
- z1=&a; z2=&b; z3=&c;
- pointer(z1,z2,z3);
- printf("从大到小依次为:%d %d %d\n",a,b,c);
- printf("指针从大到小依次为:%d %d %d\n",*z1,*z2,*z3);
- return 0;
-
-
-
- }
复制代码
这个函数是传入指针对地址进行操作,指针指向没有改变 ,只是改变了所指变量的值。
指针指向的是地址 例如
int a = 10;
int *p = &a;
p指针所指的是a的地址 指针存放的是地址。
指针变量的值就是a的地址,用上面例子来说,指针变量指向的是a a变量的值是10,所以指针变量所指的变量的值是10,而指针变量的值 存放的是a的内存地址。
可以形象的把变量名当成柜子名,柜子里存放的东西就是10,这个柜子有具体的地址,比如a柜子在2排第四个,里面存放的是10,那么指针p存放的就是“二排第四个”这个地址,a就是柜子名,10就是指针变量(二排第四个)所指变量(a)的值(10).
|
|