C/C++ 函数形参 指针&指针的指针
2014-04-23 17:08
281 查看
把指针作为函数形参的一般目的与意义在于:
能在函数内部修改指针所指对象的值
何时需要用“ 指针的指针 ”作为 函数形参?
当你需要在函数内部修改指针的指向时
p=data的地址
&p=p的地址(即地址的地址)
f(p) -> 把p传到f函数时,pk=p;pk获得了data的地址,故可用pk修改data。然而pk并不知道p的地址,故无法修改p的值即p的指向。这里的本质还是值传递,是data的地址被拷贝给了pk
f(*p): 函数内部可改变p指向的变量的值,但不可改变源p的值,即不可改变p的指向
f(**p): 函数内部可改变p指向的变量的值,也可改变源p的值,即可改变p的指向
...略显抽象
总结来说:
void f(int * pk);
void f_(int * *pk);
所谓形参都是值传递,都是实参的副本。若要通过函数内部修改外部的值,单单使用pk是一定不够的,因为pk不过是函数内的一个临时副本,任何直接对pk的赋值都不会影响外部,但*p或**p则会改变外部的值,因为他们代表的都是真实的外部变量。而**p中的p更深层次,控制权更多
能在函数内部修改指针所指对象的值
何时需要用“ 指针的指针 ”作为 函数形参?
当你需要在函数内部修改指针的指向时
void f(int * pk); void f_(int * *pk); int data =6; int *p=&data;
p=data的地址
&p=p的地址(即地址的地址)
void f(int * pk);
f(p) -> 把p传到f函数时,pk=p;pk获得了data的地址,故可用pk修改data。然而pk并不知道p的地址,故无法修改p的值即p的指向。这里的本质还是值传递,是data的地址被拷贝给了pk
f(*p): 函数内部可改变p指向的变量的值,但不可改变源p的值,即不可改变p的指向
f(**p): 函数内部可改变p指向的变量的值,也可改变源p的值,即可改变p的指向
...略显抽象
总结来说:
void f(int * pk);
void f_(int * *pk);
所谓形参都是值传递,都是实参的副本。若要通过函数内部修改外部的值,单单使用pk是一定不够的,因为pk不过是函数内的一个临时副本,任何直接对pk的赋值都不会影响外部,但*p或**p则会改变外部的值,因为他们代表的都是真实的外部变量。而**p中的p更深层次,控制权更多
相关文章推荐
- & 引用形参 与 指针
- C++引用&和指针在作为形参时的区别
- C++引用&和指针在作为形参时的区别
- C++引用&和指针在作为形参时的区别
- 写出一个函数,要求将输入的十六进制数转换成十进制数。要求函数调用时,使用指针作函数形参。
- (转+原创)c语言那些细节之a+1和&a+1的区别 ,指针的步长问题。
- 指针的引用作形参
- C和指针-- 1 & 2
- C/C++"野指针"问题
- 关于函数指针的&和*
- 线性链表中形参中的指针引用的问题
- 指针“.”和“->”的区别
- 指针做形参
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 扫描线填充算法 & 指针操作要注意的地方
- C++指针(2012.06.26&06.27)
- Eigen库对齐问题:declspec(align('16')) 的形参将不被对齐
- C++传值&传引用&传指针
- 指针做形参做局部变量以及内存分配
- 实参和形参指针做函数参数时,如何改变main函数变量的值