1.extern:
引用外部文件变量,extern int aa;
1.不可以对aa进行初始化但是可以对aa赋值(为了理解这一点本人回顾了一些赋值与初始化的区别
赋值是对已经有的对象进行操作,而初始化是从没有到有,还有内存分配等操作,而aa在外部文件中
就已经初始化了,然后我们在进行初始化当然不行)
2.在全局变量中引用了外部变量之后,extern int aa,就不能在全局变量中定义aa了int aa,但是局部变量中可以,反正不同区域中不会相互影响。
3.在一个区域中也可以写多个extern int aa;
2.在全局和局步变量中都定义了int a;但是在局部变量中想用全局变量的int a,怎么办
在aa前面加上::就可以了::a
3.一个问题:
float a=1.0;
cout<<(int &)a<<endl;
这它会输出什么?
答案:把浮点数a存储在计算机中的二进制以整型的方式输出。
因为它转变为了一个匿名引用,但是确实浮点类型的所以以这种方式输出。
比如:
int a=72;
cout <<(char &)a<<endl;
输出的就是H.
但是如果:
int a=1;
cout<<(int &)a<<endl;
输出的就是1.
4.对c++的string类
(1)用cin>>string对象时遇到空格,换行,制表,等等,就会结束捕获。
除非是开头就遇到上面的情况,那么直到有效字符才开始捕获
(2)用getline(cin,hh);方式读取将读取一整行,直到遇到换行符号,并且连换行一并读取,但是string对象
中不存在换行符号。
(3)string对象判断内容是否为空的方法为string对象.empty()
5.c++11提高的范围for语句
for (declaration: expression)
statement
举例:
代码:
#include<cctype>
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
string s("Hello World");
for(auto &c : s)
{
c=toupper(c);
}
cout<<s<<endl;
return 0;
}
/*
for (declaration: expression)
{
statement
}
其中expression部分是一个对象,用于表是一个序列。declaration负责定义一个变量,每一次循环
declaration都会被重新定义并且用下一个序列基础元素来进行初始化,总之会把序列元素全部循环一
遍。
{}就是执行语句。上面例子string序列的基本元素是char类型,(auto)c是s序列的元素的引用
所以把s的内容该了。
*/
v