|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h> //输入两个数,然后从小到大输出,中间涉及到指针变量
void swap(int *p1,int *p2);
void main()
{
int a,b,*pointer_1,*pointer_2;
printf("请输入两个数:\n");
scanf("%d %d",&a,&b);
pointer_1 = &a;
pointer_2 = &b;
if(a>b)
{
swap(pointer_1,pointer_2); // swap ---> 交换pointer_1和pointer_2
}
printf("从小到大一次是:%d,%d\n",*pointer_1,*pointer_2);
}
void swap(int *pointer_1,int *pointer_2)
{
int *point;
point = &pointer_1;
pointer_1 = &pointer_2;
pointer_2 = &point;
}
//************************************************
// swap函数里 最后三条复制语句有问题吗
//一个不应该加“&”?
//************************************************
//问题出在哪、、、、*******************************
int a; 定义a是整型变量
&是取地址符 ,&a获得a变量的地址
变量a:有2个属性(一个是变量a,另一个是变量a所对应的地址)
地址的作用:变量a会在内存对应一个点,通过地址能唯一准确的找个这个点。(无论你程序有多复杂,有多少个变量,我都能通过这个地址在内存中准确的找到这个唯一的点)
地址的保存:这时就要用地址的变量来保存地址(变量总要先定一个类型, int*所定义的类型就是地址类型) int* p =&a;地址变量p保存了变量a的地址,也就是指针变量p保存了变量a的地址.
*p 就好理解了,先通过p找到地址,再通过*把地址所对应的变量取出来。 就是*P = a
第二个问题
main()与swap()函数的关系
main()是主程序,swap()是子程序,子程序一般不能改变主程序的内容。(函数得到一个返回值主程序接受下就行了)
如果子程序要改变主程序的变量,通过地址找到变量,把值换下就行了。
void swap(int *p1, int*p2)
{
int t = *p1;
*p1 = *p2;
*p2 = t;
}
|
|