当函数的形参为结构体指针,但是在函数中不仅修改指针指向的值,而且修改指针指向的地址
以下可以改变主函数中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;}