在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
首先要理解参数传递,参数传递分值传递,指针传递,引用传递。(就我自己理解,就是把实参对形参进行赋值) 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。 指针传递: 形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作 引用传递: 形参相当于是实参的“别名”,对形参的操作其实就是对实参的操作,在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈 中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过 栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。
//简单介绍参数传递,但是主要是指针传递的介绍 实例1:指针传递 1 #include<iostream> 2 using std::cout; 3 using std::endl; 4 5 class Simple{ 6 private: 7 //一般用来定义私有变量 8 public: 9 void function(int *stu);//指针作为参数传递 10 }; 11 void main() 12 { 13 14 Simple *simple=new Simple(); 15 int value = 20; 16 int *pointer; 17 pointer = &value; //注意:不能直接对指针赋常量值,例 pointer=10(错),*pointer=10(错) 18 cout << &pointer << endl;//输出的是pointer的地址 19 cout << pointer << endl;//输出的是value的地址 20 cout << *pointer << endl;//输出的是value的值 21 22 //指针传参 23 simple->function(&value);//实参将值传给形参 stu=&value;//也可以simple->function(pointer);//结果一样 24 delete(simple); 25 system("pause"); 26 } 27 void Simple::function(int *stu) 28 { 29 30 int *temp; 31 cout << (*stu) << endl;//输出传递的值,也就是value的值10 32 temp = stu; 33 cout << temp << endl;//输出的是value的地址 34 *temp = 30; 35 cout << (*temp) << endl;//输出的是值30 36 37 }
实例2:指针的指针传递 1 #include<iostream> 2 using std::cout; 3 using std::endl; 4 5 class Simple{ 6 private: 7 //一般用来定义私有变量 8 public: 9 void function(int **stu);//指针作为参数传递 10 }; 11 void main() 12 { 13 14 Simple *simple=new Simple(); 15 int value = 20; 16 int *pointer; 17 int **temppointer; 18 pointer = &value; //注意:不能直接对指针赋常量值,例 pointer=10(错),*pointer=10(错) 19 temppointer = &pointer;//指针的指针 20 21 cout << &pointer << endl;//输出的是pointer的地址 22 cout << pointer << endl;//输出的是value的地址 23 cout << *pointer << endl;//输出的是value的值 24 25 cout << &temppointer << endl;//输出的是temppointer的地址 26 cout << temppointer << endl;//输出的是pointer的地址 27 cout << *temppointer << endl;//输出value的地址 28 cout << **temppointer << endl;//输出的是value的值 29 //指针传参 30 simple->function(&pointer);//实参将值传给形参 stu=&value;也可用//simple->function(temppointer);结果一样 31 delete(simple); |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论