指针和引用
来源:互联网 发布:泰国出行必备软件 编辑:程序博客网 时间:2024/06/03 14:32
一:C++的关键字
二.c++的数据类型:
内置类型:c++中基本的数据类型,表示语言内部本身已定义的类型。
自定义类型:表示使用class/enum/struct/union自己定义的类型。
在前面的学习中我们知道,不同数据类型的集合结构体可以实现,
三.命名空间,为了解决全局命名冲突(同名冲突)的问题。
命名空间它相当于一个更灵活的作用域,以关键字namespace来命名。如果统计学生信息:
using namespace std;namespace STU1{ int num = 0;}namespace STU2{ int num = 2;}int main(){ STU1::num = 10; STU2::num = 20; cout <<STU1::num << endl; cout << STU2::num << endl; system("pause"); return 0;}
这样我们就可以很好的区别STU1可以表示学生1,STU2可以表示学生2;
关键字namespace语法:
语法:
namespace name { declaration-list;//成员 }
关键字namespace允许你创建一个新的空间.名字由你选择,忽略创建没有命名的名字空间.一旦你创建了一个名字空间,你必须明确地说明它或者用关键字using.
四.引用,不是定义的是一个新的变量而是给已经定义的变量起的别名;常用符号&表示。就是它的的地址不变,只是换了个名字而已。
void test(){ int a = 10; int &b = a; cout << a << endl;//变量a cout << b << endl;//变量a的引用}
引用的特点:
1:应用前变量必须初始化
2:一个变量可以有多个别名。
3.应用只能在初始化的时候应用一次,不能改变为再应用其他的值。
using namespace std;void test(){ int a = 10; int &b = a; int c = 20; int &b = c; cout << a << endl; cout << b<< endl; cout <<c<< endl;}
五.C/C++输入输出对比
C语言中我们知道程序的运行都有输入scanf,输出printf
C++中输入是cin,输出是cout,endl相当于C中'\n'。
using namespace std;void test(){ int data = 0; cout <<"please enter data"<< endl; cin >> data; cout << data << endl;}
六、C++的重载
在同一作用域内函数名相同,参数列表不同(类型/个数不同),返回值可同,可不同。
void fun1(){ int a = 10;}void fun1(int x){ int b = 10;}
编译器可以通过
void fun1(int y){ int a = 10;}void fun1(int x){ int b = 10;}
不可以。参数列表的类型形同。
void fun1(char *str,int *y){ char c = 'A'; int a = 10;}void fun1(int *x,char *str){ int b = 10; char d = 'B';}
在传参数时先从右边,再从左边。
七、const引用
const关键字是修饰常量using namespace std;void test1(){ int a = 10; const int &b = a; b = 30;//b是常量不能赋值; const int c = 20; const int &d = c;//常引用可以修饰常量; cout << a << endl; cout << b << endl; cout << c << endl; cout << d << endl;}
八,引用的传递
值传递:形参是实参的一份拷贝,当形参发生改变,实参的内容并没有发生改变。
void swap(int a, int b) { int tmp = a; a = b; b = tmp;}int main(){ int x= 10; int y = 20; swap(x, y); cout << x<< endl; cout << y << endl; system("pause"); return 0;}
指针传递:
void swap(int* a, int *b) { int tmp = *a; * a = *b; *b = tmp;}int main(){ int x= 10; int y = 20; swap(&x,&y); cout << x<< endl; cout << y << endl; system("pause"); return 0;}
a指向一个外部实参的地址,*a取地址的内容,如果改变*a,则结果必然改变。
引用传递
using namespace std;void swap(int &a, int &b) //形参是实参的别名{ int tmp = a; a = b; b = tmp;}int main(){ int x= 10; int y = 20; swap(x, y); cout << x<< endl; cout << y << endl; system("pause"); return 0;}
我们可以看到传参数,先传y,然后再传x。传参数的顺序是从右向左。
始终记住,引用只是变量的别名,交换a,b实际交换了x,y.
0 0
- 指针和指针引用
- 指针和指针引用
- 指针和指针的引用
- 指针和指针的引用
- 指针,和指针的引用
- 指针和指针的引用
- 引用和指针小结
- 指针和引用
- 区分指针和引用
- 指针和引用
- 指针和引用
- 指针和引用
- 指针和引用
- 引用和指针
- 函数指针和引用
- 引用和指针
- 引用和指针
- 引用和指针
- 位运算
- SQL常用命令大全!!!
- Ubuntu系统安装Ruby的三种方法
- Java语言基础(四)—— 变量和数据类型
- 计算器项目
- 指针和引用
- 【HIbernate框架学习】:Hibernate组件映射
- Linux(Ubuntu)常用
- Docker有关GUI软件的界面显示设计
- 初识PE结构:简单的越过验证
- 面试知识点(第三弹:反射)
- 工程师都不应该写ETL:构建高级数据科学部门指南
- 我的Ubuntu软件清单
- android数据库SQLite介绍