初学VC,看到好多函数中都会有引用、指针或指向指针的指针这些形参,不是很好理解。这两天思考了一下,理解如下。
以后打算坚持每周发至少一篇博客,这里首次试用了Markdown编辑器。
欢迎交流学习。
形参用的引用
- 概念
对于引用,最简单而准确的理解是:引用就是一个变量的别名。相当于给一个变量a又起了一个名字b,其实它们俩本身还是一个变量,在程序中对a或b的任何操作都是对这一个变量的操作。 - 示例
新建一个WIN32控制台程序——>选择空项目,然后添加一个.cpp
源文件,输入如下代码:
#include <iostream> using namespace std; void get(char& b) { b = '#'; } int main() { char a;//对比三者对变量的定义 get(a);//对比三者函数参数的使用方法 cout << a <<endl; return 0; }
Ctrl+F5执行程序,输出如下结果;
- 概念
形参中的指针
- 概念
形参中使用指针,同样也可以达到传参的效果。但是原理不同,使用方法也有些不同。如下示例:形参指针b指向的是变量a的地址,所以改变b指向的地址(即变量a的地址)的值自然也就改变了a的值。 - 示例
#include <iostream> using namespace std; void get(char* b) { *b = '#'; //对b所指向的地址(即变量a的地址)赋值,从而改变了变量a的值。 } int main() { char a;//对比三者对变量的定义 get(&a);//对比三者函数参数的使用方法//把a的地址赋给指针b;即char* b = &a; cout << a <<endl; return 0; }
输出结果与上一示例相同。
- 概念
形参中指向指针的指针
- 概念
很多函数中会使用指向指针的指针作为形参,这样初学会不太好理解。实质只是比指针更深层了一步,程序中有时为了传递数组或字符串等经常会使用这种方式。 - 示例
#include <iostream> using namespace std; void get(char** b) { *b = "###########";//即char** b = &a;则*b = a; } int main() { char c = 'c'; char* a = &c;//对比三者对变量的定义//指针使用前最好初始化一下 get(&a);//对比三者函数参数的使用方法 cout << a <<endl; return 0; }
输出结果
- 概念