黑马程序员技术交流社区

标题: 指针问题求大神解答 [打印本页]

作者: 745960689    时间: 2016-3-15 00:47
标题: 指针问题求大神解答
void test(int * num1,int * num2)
{
      int * temp = num1;
      num1 = num2;
      num2 = temp;
}
int main ()
{
     int num1 =5;
     int num2 =3;
    test(&num1,&num2);

}
输出居然num1还是5,num2还是三,
在函数里面不是两个指针不是交换了地址了吗。所以函数里的num1指针应该只想的是num2啊。怎么还是指num1啊
作者: 冷傲阳    时间: 2016-3-15 21:45
是这样的,你在man函数中调用了test函数,里面的num1和mun2的实参传递给了test方法,
test方法里面的num1和num2是test方法里的局部变量,你在方法里面改变了指向,也只是改变了这两个局部变量的指向,这两个变量的作用域仅限在test方法里面,方法结束后局部变量的空间被释放,man函数里面的num1和num2是不会改变的
void test(int * num1,int * num2)
{
      int  temp = *num1;
      *num1 = * num2;
      *num2 =  temp;
}
int main ()
{
     int num1 =5;
     int num2 =3;
    test(&num1,&num2);

        printf("num1=%d,num2=%d",num1,num2);
}

这样就行了
作者: 冷傲阳    时间: 2016-3-15 21:46
不知道我解释的清不清楚




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2