【发布时间】:2015-03-02 21:55:40
【问题描述】:
我发现如果你在函数中将一个指针地址分配给另一个指针的地址,它不会改变 main 中的 in 值, 然而,通过在 main 中做同样的事情,它会改变。那么这是什么原因呢?
void func(int *a, int *b){
b = a;
}
int main(){
int i= 5, k =6, *a=&i, *b=&k;
printf("%d %d\n",*a,*b); //output 5 6
b = a;
printf("%d %d\n",*a,*b); //output 5 5
a=&i;
b=&k;
func(a,b);
printf("%d %d\n",*a,*b); //output 5 6
printf("%d %d\n",*a,*b); //output 5 6
}
【问题讨论】:
-
因为你是通过拷贝传递指针,然后又改变了指针的拷贝。
-
顺便说一句,您永远不会调用该函数。这是复制错误吗?