C++Primer——变量、引用、指针
来源:互联网 发布:sql许可模式 编辑:程序博客网 时间:2024/05/17 04:10
1、C++中初始化和赋值是俩个完全不同的操作,初始化的含义是创建变量时赋与其一个初始值;而赋值的含义是把对象的当前值擦除,而以一个新的值代替。
string类规定如果没有指定初始值就生成一个空串,定义于任何函数体之外的变量被初始化为0(但有一种特殊情况,定义在函数体内部的内置类型将不被初始化,static关键字)
2、extern关键字来声明变量,
extern int i;//只是声明i
int j; //声明并定义j
在函数体内部,初始化一个由extern声明的变量,将报错。
变量能且只能被定义一次,但是可以被多次声明。
3、C++的标识符由字母、数字和下划线组成,其中必须以字母和下划线开头,标识符长度没有限制,但对字母大小写敏感。
4、作用域操作符::,如果函数定义了一个全局变量,不宜再定义一个同名的局部变量(在块作用域内,局部变量的值会覆盖掉全局变量的值)。
5、引用必须初始化(定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用。一旦初始化完成,引用将和她的初始值对象一直绑定在一起)
引用即别名,它并非对象,只是为已存在的对象起的另外一个名字(对引用的所有操作都是在与之绑定的对象上进行的)
不能定义引用的引用;引用的类型必须与绑定的对象严格匹配。引用只能绑定在对象上,不能绑定与字面值或某个表达式的结果绑定)
6、不能定义指向引用的指针(引用不是对象,没有实际地址)
指针的类型要和它所指向的对象严格匹配(除const-P534)
指针值只能有以下四种状态:
1)指向一个对象。
2)指向紧邻对象所占空间的下一个位置。
3)空指针,指针没有指向任何对象。
4)无效指针,其他值。
解引用符*(对指针解引用得到所指对象)如果对解引用的结果赋值,也就是对指针所指对象赋值
int a = 42;
int* p = &a; //p是指向变量a的指针
cout<< * p; //对p解引用,得到p所指的对象
* p = 0; //p解引用得到p所指的对象,将0赋值给所指向对象
cout<< * p; //输出0;
&和*的多重含义
int i= 42;
int& r =i; //&紧随类型名出现,是申明的一部分,r是一个引用
int* p; //*紧随类型名出现,是申明的一部分,p是一个指针
p = &i; //出现在表达式中,是一个取地址符
* p = i ; //出现在表达式中,是一个解引用符
int& r2 = * p; //&是声明的一部分,*是一个解引用符
(只要是紧随类型名出现,一定是声明的一部分)
- C++Primer——变量、引用、指针
- c++primer学习记录(2)——引用,指针
- C++primer学习笔记——引用和指针
- C++Primer学习概要:引用和指针
- C++Primer学习之一引用和指针
- 【C++】基础知识—引用和指针引用
- (4)风色从零单排《C++ Primer》 变量,引用,指针
- Android For JNI(三)——C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值
- Android For JNI(三)——C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值
- 细嚼慢咽C++primer(3)——引用形参,内联函数,重载函数,指向函数的指针
- c 指针定义和引用 变量类型
- c语言-指针变量的引用
- 【C语言】指针变量的引用
- C/C++——引用和指针
- 引用—C++ primer
- 引用—C++ primer
- C++Primer 笔记 -- 指针和引用的区
- C++Primer 学习笔记之指针和引用
- JQuery的文档就绪函数和基本语法,JQuery的优势
- Java菜鸟学习日记20
- 20170726Python02_基础数据类型
- Vue.js 开发记录
- 剖析基于并发AQS的共享锁的实现(基于信号量Semaphore)
- C++Primer——变量、引用、指针
- Android 多线程与Java多线程比较 有哪些区别
- TCP套接字通信
- android解析json数据显示
- 剑指offer数组中只出现一次的数字
- 生活中感动的点点滴滴
- 五.Gradle的基本原理
- int 和 Integer 有什么区别。请简单的写一段有关自动拆装箱的代码。
- 单调栈