可以看出来test1,test2,test3分别传递了一个指针 ,一个指针的指针和一个普通的int类型。
分析一下输出结果。
声明了L1 . L2,L3 三个LinkList 变量(Node*)和一个int a做参照。
正常思想,传递int类型,发生值传递,int a被传递进test3。
调用test3之前
a在内存中的地址是115f99c,存放的值是3
进入test3之后
a在内存中的地址是115f8c8,存放的值还是3
出test3之后
a在内存中的地址是115f99c,存放的值还是3,
这就是值传递,存放的值没有变化,但其实在内存中数据存在的位置已经发生了变化。所以a=4并没有被打印出来,那是因为 115f8c8这个内存的位置被修改为4,115f99c内存并没有被修改。
------突然加一句
算了不想说了
-----
那么,传递int *类型呢,这里用LinkList 变量(Node*)做尝试(这里踩的坑)
test1中传递LinkList 原型是Node* ,认为传递的是一个指针,所以能把数据给带出来
L3进入test1之前 Node*
本身地址115f9a8,指向1385ed0,这里1385ed0其实也指向Node的实例
进入test1之后
本身地址115f8c8,指向1385ed0,这里1385ed0其实也指向Node的实例
L3malloc之后
本身地址115f8c8,指向1385f08,这里1385f08其实也指向Node的实例
L3出test1之后
本身地址115f9a8,指向1385ed0,这里1385ed0其实也指向Node的实例
看起来传递了指针,但是目的并没有达到。
所以如果想要通过传递指针来改变值的话,
举个例子 想要改变int* 类型的参数的值,函数的参数就必须是int**,