C++中,当形参是指针,实参是什么
2个回答
展开全部
你这第一个和第二个有什么不一样的么,就是把temp换成了p。
第一个和第二个都不会有变化,第三个会交换。
要理解指针和指针变量的含义,我们平时说的指针,一般指的就是指针变量。指针变量也是变量,它的值也会变化。指针变量保存的是一个内存地址。
函数调用的过程中,先要把实参复制给形参,如果参数是指针类型,那么就是把指针变量复制了过去,所以实参和形参是两个不同的指针变量,只不过是保存的内存地址是一样的。可以拿int类型来类比。相当于:int
a,
b;
a
=
100;
b
=
a;
这里a和b是两个不同的变量,同样实参的指针变量和形参的指针变量也是两个不同的变量,修改a并不会影响b。所以第二个里面p=p1;
p1=p2;
p2=p1;修改的是形参的指针变量,执行完之后,实参的指针变量并没有改变指向的内容。而第三个里面就不一样了,它修改的不是指针,而是指向的内存,实参和形参指向的内存是同样的,所以实参指针变量指向的内容被修改了。
所以,理解了指针的原理和函数调用的原理就能明白这个问题了,不能简单地认为只要传递指针就能改变实参。
第一个和第二个都不会有变化,第三个会交换。
要理解指针和指针变量的含义,我们平时说的指针,一般指的就是指针变量。指针变量也是变量,它的值也会变化。指针变量保存的是一个内存地址。
函数调用的过程中,先要把实参复制给形参,如果参数是指针类型,那么就是把指针变量复制了过去,所以实参和形参是两个不同的指针变量,只不过是保存的内存地址是一样的。可以拿int类型来类比。相当于:int
a,
b;
a
=
100;
b
=
a;
这里a和b是两个不同的变量,同样实参的指针变量和形参的指针变量也是两个不同的变量,修改a并不会影响b。所以第二个里面p=p1;
p1=p2;
p2=p1;修改的是形参的指针变量,执行完之后,实参的指针变量并没有改变指向的内容。而第三个里面就不一样了,它修改的不是指针,而是指向的内存,实参和形参指向的内存是同样的,所以实参指针变量指向的内容被修改了。
所以,理解了指针的原理和函数调用的原理就能明白这个问题了,不能简单地认为只要传递指针就能改变实参。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询