A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 745960689 中级黑马   /  2016-3-15 00:47  /  976 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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啊

2 个回复

倒序浏览
是这样的,你在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);
}

这样就行了
回复 使用道具 举报
不知道我解释的清不清楚
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马