1,main函数的返回值必须是int值
2,c++是通过定义类来定义自己的数据结构
3,函数体要以return ...结束
4,EOF 是 End Of File 的缩写。
在C语言中,它是在标准库中定义的一个宏。EOF 不是一个字符,它被定义为是 int 类型的一个负数(比如 -1),EOF 也不是文件中实际存在的内容。EOF 也不是只表示读文件到了结尾这一状态(这种状态可以用 feof() 来检测),它还能表示 I/O 操作中的读、写错误(通常可以用 ferror() 来检测)以及其它一些关联操作的错误状态。
5,内置类型是指任何语言在设计初期定义的类型,如c语言中的int, double, char... 它也是在一种语言中最基本的类型, 与编译器编译出的代码具有重大关系, 值得一提的是, 不同语言也拥有不同的内置类型,字面值大体上可以分为整型字面值、浮点字面值、字符和字符串字面值、特殊字面值(NULL)
6,例如 int x = 123_456_789.在编译的时候,下划线会自动去掉。可以连续使用下划线,比如float f = 1.22___33__44.二进制或者十六进制的字面值也可以使用下划线,记住一点,下划线只能用于数字与数字之间,初次以外都是非法的。例如1._23是非法的,_123、11000_L都是非法的。
7,只有内置类型存在字面值,没有类类型的字面值。
8,为了兼容c语言,c++中所有的字符串字面值都由编译器自动在末尾添加一个空字符。
9,(1)左值:可以出现在赋值语句的左边或者右边左值就是任何具有内存地址并且可以拥有别名的元素,相对而言,临时或者常量表达式都不是左值;
(2)右值:只可以出现在赋值语句的右边,比如数字字面值是右值,因此不能被赋值。
10,C++标准还保留了一组标识符用于标准库,标识符不能包含两个连续的下划线,也不能以下划线开头后面紧跟一个大小写(能运行)
11,内置类型变量能否自动初始化取决于变量定义的位置,在函数体外定义的变量都初始化为0,而在函数体内定义的变量不能自动初始化,类类型如果定义了默认构造函数的话,调用默认构造函数进行初始化,如果没有定义默认构造函数,必须显式进行初始化
例如:
#include<iostream>
using namespace std;
int a;
int main()
{
int _a;
cout<<_a<<a;
return 0;
}//屏幕显示值为00;
12,变量的声明和定义的区别:变量的定义用于为变量分配储存空间,而变量的定义只能有一次,变量的声明只是为了声明他的类型和名字,可以使用extern关键字,变量的声明可以是多次的。
附注:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。
13,const小结
(1)定义const常量时必须进行初始化
(2)非const变量默认为ertern,要使const变量能够在其他文件访问,必须显式指定它为extern,否则,此const变量只能在包含他的文件中使用;
14,引用小结
(1)引用就是另一个对象的名字,实际程序中,引用主要时作为函数的形参存在;
(2)引用是一种复合类型,必须与该引用同类型的对象初始化,不能定义引用的引用;
(3)const引用是指向const对象的引用,如const int val=1024;
const int &ival=val;(正确)
int &ival=val;(错误)
15,枚举:不但定义了整数常量集,而且还把他们聚集成组。枚举分为限定作用域的和不限定作用域。
(1)枚举类型的定义和初始化,关键词enum+枚举类型名+{逗号分割开的成员列表},默认的,第一个成员的初始值为0,后面的每一个成员值比前一个大1;
(2)枚举成员初始化必须用一个常量表达式
(3)每个enum都定义了一种新的类型,枚举类型的对象的初始化或赋值,枚举只能通过其枚举成员或同一枚举类型的其他枚举成员
11,用class和struct关键词定义类的唯一差别在于默认访问级别,默认情况下,struct的成员为public,而class的成员为private;
12,头文件:c++中通过头文件实现由多个文件组成的程序需要一种方法连接名字的使用和声明
(1)头文件一般包括类的定义,extern变量的声明和函数的声明,头文件用于声明而不是用于定义,因为头文件包含在多个多个源文件中,所以不应该含有变量或函数的定义,同一个程序中有2个以上的文件含有同一个定义都会导致多重定义链接错误,但是,有三个例外,头文件可以定义类,值在编译时就已经知道的const对象和inline函数,
13,标准库string类型(支持长度可变的字符串)
(1)标准库string类型和字符串字面值不是同一种类型,
(2)string的读写:cin>>s,读取并忽略开头所有的空白字符(如空格,换行符,制表符);读取字符直至再次遇到空白字符,读取终止,另外一个读取正行文本的函数getline函数(cin,line)函数,遇到换行符读取终止,刚开始的时候如果遇到换行符,则string参数被置为空串,getline函数将istream参数作为返回值。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
while (getline(cin, s1))
{
cout << s1 << endl;
}
return 0;
}
//hello word
//hello word
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
cin >> s1;
cout << s1 << endl;
return 0;
}
//hello word hello
// hello hello
(3)string对象常用的操作:s.empty(),s.size();
(4)string::size_type其实是string模板类定义的一种类型之一,它与size_of的用法相似,只是它根据存储的类型返回字符串的长度.对于 string具体化,将根据char返回字符串的长度,在这种情况下,size_type与size_of等效.size_of是一种无符号类型.
(5)string字符串的连接中“+”操作符左右两边的操作数至少有一个是string类型
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1, s2, s3;
s1 = "first";
s2 = "second";
s3 = s1 + s2;
cout << s3 << endl;
s2 += s1;
cout << s2 << endl;
s1 += "third";
cout << s1 << endl;
s1 += 'a';
cout << s1 << endl;
return 0;
}
//firstsecond
secondfirst
firstthird
firstthirda
(6)string对象中单个字符的处理函数(包含头文件cctype)常用的有以下几种:
isalnum(c)如果是字母或者数字返回true;
isaipha(c)如果是字母返回true;
iscntrl(c)如果是控制字符返回true;
isdigit(c)如果是数字返回true;
islower(c)如果是小写字母返回true;
isupper(c)如果是大写字母返回true;
Tolower(c)如果是大写字母,则返回其小写字母形式,否则返回c;
Toupper(c)如果是小写字母,则返回其大写字母形式,否则返回c;</string></iostream></string></iostream></string></iostream></iostream>