c++程序设计学习第一总结

一、constexper和const
constexpr定义常量(在大多数情况下和const使用没有区别)
constexpr int sire = 20; //20是崇量表达式
constexpr int Linits=sire+10; //size+10是常量表达式
constexpr int max- length(); //只有length()是一个constexpr函数时max的声明才正确。
二、auto和decltype。
1、auto 可以定义不知道类型的变量,但是这个变量必须初始化而且auto定义的变量的值也要与表达式的值相等
2、decltype可以选择并返回操作数的类型,即可以使定义的变量得到deutype 选择的表达式的类型,但又使定义变量的值可以不等于所选表达式的值(可以自己定义)
auto X=5;//5是int类型
auto size= size of(int);// size是表示内存字节数的类型,具体不清
auto name= “world”; //name要保存字符串"word",具体不清楚
auto a;//错误,没有初始值.
auto r=1,pi=3.14 //错误,在一条auto语句中,如果同时定义两个及以上变量的初始值,它们的初始值类型必须相同才行
三、类型别名(即可以给类型名改名子)
1、方法一: using 别名=类型名;
2、方法二:typedef 类型名 别名;
3、方法三: #define 别名 类型名(没有分号)
注意:这三种定义别名的方法,既可在预处理中,也可以放在主函数里,但是前两种方法,定义了类型别名之后,就只能使用类型别名,而不能使用原先的类型名了,第三种方法则都可使用。(可以自己打代码试一下)
四、指针
1、定义:类型 指针变量
2、区分指针变量和
指针变量
①指针的内存大小与被指向内容的内存大小一样
②指针的地址与被指内者的地址不一样
③指针的内容是被指同内容的地址
④ 指针所指内存中存放的内容是被指向内容的值
3、空指针及生成空指针的3种办法:
指针值为0时表示一个空指针。
①int *指针变量=nullptr;
②int *指针变量=0;
③#include
int *指针变量=NULL;
五、new和delete
1、区别:new在动态内存中为对象分配空间,并返回一个指向该对象的指针。
delete接受一个动态对象的指针,销毁指针指向的对象,并释放与之关联的内存
2、new表达式的三种形式
①类型1 *指针=new 类型2(初始化)
②类型1 *指针=new 类型2[数组大小]
③类型1 *指针1=new(指针2)类型2
指针2为被new定义
3、delete释放内存
①释放new分配的单个对象:delete 指针
②释放new分配的数组:delete [ ] 指针
六、引用(左值和右值)
1、左值引用:
类型&引用名=已有被赋值变量名
2、右值引用:
类型&&右值引用变量=右值表达式(必须是表达式)
七、const限定指针
1、const后面的被限定,其值不能改变,只能为常量
2、不能将一个const地址赋值给一个非const地址
3、可以将一个非const地址赋值给const指针
八、结构体struct
1、定义:struct 结构体类型名{
成员声明
};
2、结构体的成员不能单独使用,必须由结构体类型的变量通过成员选择运算符"."
3、还可以在struct添加比较函数,规定const的排列顺序
4、多用于多个不同的数据类型的变量
5、struct a[ ]也可以用struct数组
九、字符窜输入string
1、头文件include
2、
string s1 . 默认初始化,s1 是一个空串
string s2(s1) s2是s1的副本
string s2= s1 . 等价于s2(s1)
string s3(“value”) s3是字面值"value"的副本,除了字面值最后的空字符外
string s3 = “value” 等价于s3(“value”), s3是字面值"value"的副本
string s4(n, 'c’) 把s4初始化为由连续n个字符c组成的串
3、
s.empty() S为空返回true,否则返回false
s.size() 返回s中字符的个数
s[n] 返回s中第n个字符
s1=s2 . s2的副本替换s1原来的内容
4、
isalnum©当c是字母或数字时为真
isalpha©当c是字母时为真
isdigit©当c是数字时为真
islower©当c是小写字母时为真
isupper©当c是大写字母时为真
isspace©当c是空白时为真
tolower©如果c是大写字母,返回对应的小写字母,否则返回原字符
toupper©如果c是小写字母,返回对应的大写字母,否则返回原字符
5、getline(is,s)从输入流is中读取一行给s
十、vector
动态数组,具体操作见STL vector
十一、文件输入流
1、
①假如程序可执行文件名为addNumbers.exc准输入读取数据,运行结果写到标准输出设备:
c: >addNumbers
②假如使用输入重定向,输入数据保存在文件numbers.xt,则命令行命令为:
c: > addNumbers numbers . txt
③如果要将运行结果写入文件output.txt,可以同时使用输出重定向:
c: > addNumbers <numbers. txt >output. txt
2、操作
①头文件include
ifstream 变量名(“文件名.txt”) 打开输入文件
ofstream 变量名(“文件名.txt”)打开输出文件
变量名 .open()打开文件(例如:in.open())
变量名.close()关闭文件(例如:out.open())
in>> 从文件中读入数据和cin一样
out<<输出数据和cout一样
②头文件include
istringstream 变量名1(string类型的变量名2) 利用字符串流逐项提取数据
ostringstream 变量名(“ ");构建一个临时空间,将要输出的数据暂时存在变量名中(此时变量名相当于cout)
十二、函数见解(只写了自己认为有用的)
1、参数传递的方式
传值、传引用、传指针
其中传值不能改变参数的值,所以我们要改变参数的值可以用传引用和传指针
2、使用函数时,可以先定义函数,然后再主函数中使用或者先声明函数,可以直接在主函数中使用,然后再主函数后定义函数
3、函数重载
c++中的函数重载机制允许多个函数共享同一个函数名,但是针对不同的参数类型提供不同的操作。
如何判断重载函数?
函数名字相同,功能类似,但是参数不一样。
① //重载函数:参数类型不同(是重载函数)
void print( int val ) ;
void print( const string& ) ;
② //同一个函数的重复声明(不是重载函数)
void print( const string& s1) ;
void print( const string& s2) ;
③//错误的重复声明:只有返回类型不同(不是重载函数)
int print( int val) ;
void print ( int val) ;
④//同一个函数的重复声明(不是重载函数)
voidf(int);
voidf(constint);

猜你喜欢

转载自blog.csdn.net/qq_43550247/article/details/88783278