关于函数传一级指针与二级指针的问题
网上看很多资料,谈到值传递与引用传递。认为指针传递是值传递,传进来的是实参的副本。
比如一个这样的函数 void passParamType(char * p)
{
// p = &全局变量;
//*p = 'a';
}
void passParam2Type(char ** p)
{
//p = &另外的全局变量;
//*p = "mgh";
}
前面两个方法主要涉及到的一级指针与二级指针改变地址与所指向的内容的问题。
当函数传实参进来,比如第一个函数 就好像 p = array; 第二个也一样,其中array是个字符数组。
下面来说说我的想法。 对于两个函数当p = &全局变量,此时很多资料都是说此时操作的是实参的副本对实参没影响,这里我就有点迷糊了,这里干嘛非得扯上实参的副本,还是编译器机制就是这样(PS:编译器机制我不知道)p = &全局变量 这里是对形参重新给予了新的地址,对实参当然没影响。*p 这里倒好理解,形参p指向的实参的地址,*p当然就是实参的内容,因此就可以改变。 求各位麻烦指教下,小弟在此学习了。还望大家多指出我的错误所在。
比如一个这样的函数 void passParamType(char * p)
{
// p = &全局变量;
//*p = 'a';
}
void passParam2Type(char ** p)
{
//p = &另外的全局变量;
//*p = "mgh";
}
前面两个方法主要涉及到的一级指针与二级指针改变地址与所指向的内容的问题。
当函数传实参进来,比如第一个函数 就好像 p = array; 第二个也一样,其中array是个字符数组。
下面来说说我的想法。 对于两个函数当p = &全局变量,此时很多资料都是说此时操作的是实参的副本对实参没影响,这里我就有点迷糊了,这里干嘛非得扯上实参的副本,还是编译器机制就是这样(PS:编译器机制我不知道)p = &全局变量 这里是对形参重新给予了新的地址,对实参当然没影响。*p 这里倒好理解,形参p指向的实参的地址,*p当然就是实参的内容,因此就可以改变。 求各位麻烦指教下,小弟在此学习了。还望大家多指出我的错误所在。
...全文
相关推荐
C/C++ 的指针经验总结
为了避免这些问题,必须确保每次`delete`都对应一个有效的`new`,并避免丢失对内存的引用。指针与指针数组、二级指针等高级话题进一步扩展了其功能。
C++学习教程从零开始(五)-何谓指针共18页.pdf
一个二级指针(如`int** ptr`)可以指向一级指针,一级指针又可以指向一个整型变量。这在处理嵌套结构或者传递指针的指针给函数时非常有用。动态内存分配是另一个与指针密切相关的主题。
函数参数的传递问题(一级指针和二级指针)
函数参数传递问题(一级指针和二级指针)函数参数传递问题是指在函数调用时,参数的传递方式对函数的执行结果的影响。
C语言 一级指针与二级指针详细介绍
本文详细介绍了C语言中的一级指针和二级指针的概念、用途以及相关的操作。一级指针是直接指向变量的地址,而二级指针则是指向一级指针的地址,这种机制允许我们间接访问和修改原始变量的值。在C语言中,指针是
c语言指针之二级指针示例
二级指针的问题:在给出的三个程序中,每个都展示了二级指针的不同用法和输出结果。这些程序会输出变量的值、地址,以及二级指针解引用后的内容。


