上面是ac的代码,当时我的代码的ReverseList函数本来是void,想直接通过传递head指针在里面函数修改head指针,但是不能完成 也就是想完成如下代码的功能
#include <cstdio>void f(int *a){ int *b = new int[10]; for(int i = 0; i < 5; i++) b[i] = 100; a = b;}int main(){ int *a = new int[10]; for(int i = 0; i < 5; i++) a[i] = i; f(a); for(int i = 0; i < 5; i++) printf("%d ", a[i]); return 0;}通过函数来把指针a的地址修改掉,事实上这是行不通的,要写成下面才行
#include <cstdio>void f(int *(&a)){ int *b = new int[10]; for(int i = 0; i < 5; i++) b[i] = 100; a = b;}int main(){ int *a = new int[10]; for(int i = 0; i < 5; i++) a[i] = i; f(a); for(int i = 0; i < 5; i++) printf("%d ", a[i]); return 0;}也就是说单纯地把a的地址传过去,然后修改a的地址,这样做是不行的,这样只能修改a数组里面的值,必须把指针a的指针地址传过去进行修改
新闻热点
疑难解答