當函數的形參爲結構體指針,但是在函數中不僅修改指針指向的值,而且修改指針指向的地址
以下可以改變主函數中a的值,但是a指向的地址不會發生改變
struct student {
int aa;
int bb;
student() {}
student(int aa, int bb) : aa(aa), bb(bb) {}
};
void fun(student* a, student* b) {
*a = *b;
}
int main() {
student* a;
a = new student();
student b = student( 3, 4 );
printf("%p\n", a);
fun(a, &b);
printf("%p\n", a);
printf("%d\n", a->aa);
return 0;
}
以下這種方式,不僅修改了a的值,而且改變了a指向的地址,指向了b
struct student {
int aa;
int bb;
student() {}
student(int aa, int bb) : aa(aa), bb(bb) {}
};
void fun(student** a, student* b) {
*a = b;
}
int main() {
student* a;
a = new student();
student b = student( 3, 4 );
printf("%p\n", a);
fun(&a, &b);
printf("%p\n", a);
printf("%d\n", a->aa);
return 0;
}