
懂C语言的给我解释下这个指针程序??
#include<stdio.h>voidmain(){voids(int*p1,int*p2);inta=3,b=5;int*pointer_1,*pointer_2;...
#include<stdio.h>
void main()
{
void s(int *p1,int *p2);int a=3,b=5;int *pointer_1,*pointer_2;
pointer_1=&a;pointer_2=&b;
if(a<b) s(pointer_1,pointer_2);
printf("%d,%d",a,b);
}
void s(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}我们今天初学指针,这个函数调用求a和b的大小。为什么定义的是void s(int *p1,int *p2),里面有*号;后面是if(a<b) s(pointer_1,pointer_2);不是if(a<b) s(*pointer_1,*pointer_2); 展开
void main()
{
void s(int *p1,int *p2);int a=3,b=5;int *pointer_1,*pointer_2;
pointer_1=&a;pointer_2=&b;
if(a<b) s(pointer_1,pointer_2);
printf("%d,%d",a,b);
}
void s(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}我们今天初学指针,这个函数调用求a和b的大小。为什么定义的是void s(int *p1,int *p2),里面有*号;后面是if(a<b) s(pointer_1,pointer_2);不是if(a<b) s(*pointer_1,*pointer_2); 展开
3个回答
展开全部
对于这个问题,在声明过程中void s(int *p1,int *p2)只是表明有两个指向整形数据的指针.p1,p2的类型是int*型与pointer_1pointer_2相同。
在使用过程中,因为声明的是指向整形数据的指针,所以要用地址,不加*
这和声明;int *pointer_1,*pointer_2;而用pointer_1pointer_2相同
在使用过程中,因为声明的是指向整形数据的指针,所以要用地址,不加*
这和声明;int *pointer_1,*pointer_2;而用pointer_1pointer_2相同
展开全部
交换两个变量值,就要涉及改变参数值,就必须“传址”,否则,参数传值没法互换。
既然传址,就要定义就要有 * ,pointer_1本来就是地址,所以,不能加*
既然传址,就要定义就要有 * ,pointer_1本来就是地址,所以,不能加*
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
pointer_1=&a;pointer_2=&b;意思是取a、b的地址,然后将a、b地址传过去,你不能将*p1看作一个参数,其实* 是一个操作符,对参数进行操作,就是取地址里面的值,实际上pointer_1-->p1、pointer_2-->p2。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询