C++第一部分总结

c++(一).
一丶复合类型
1指针与引用
(一)指针
(1)指针的特点
指针持有一个对象的地址,称为指针“指向”该对象
通过指针可以间接操纵它指向的对象
(2)指针的定义
型如int*a   char*a,*b
(3)取地址符
使用取地址符"&"
型如int *pi=&ival
(4)特殊
void类型
可以持有任何类型的地址值,即通用指针
(4)注意
指针不能保存非地址值,也不能被赋值或初始化为不同类型的地址值
指针可以进行加或减整数值的算术运算
自增、自减运算适用于指向数组元素的指针
引用
左值引用
(1)引用的定义与初始化
引用由类型标识符和一个取地址符(&)来定义
类型& 引用名 = 初始值;
(2)引用关系
引用一旦初始化,就不能再指向其他的对象,对左值引用的所有操作都会被应用在它所指向的对象上
右值引用
(1)右值引用的定义与初始化
类型 &&右值引用变量 = 右值表达式
(2)注意
右值引用只能绑定到临时对象
右值引用引用的对象将要被销毁,而且该对象没有其他使用者
(3)std::move
返回给定对象的右值引用
在<utility>中定义
调用std::move是告诉编译器希望像对待右值那样处理一个左值。所以,对一个对象调用std::move后,可以销毁它,也可以给它赋予新的值,但不能使用被移动后的对象的值。
const指针
(1)类型
型如const type *cp; 或者type const *cp;或者type* const cp = initAddressValue;
(二)结构体和枚举
结构体struct
(1)定义

struct 结构体类型名{
    成员声明;
};

例如
struct X {    
char c;
int i;
float f;
double d;
};
(2)注意
结构体中的数据不能单独使用
枚举
枚举类型定义了一组命名的整数常量
(1)例如
enum TrafficLight { red, green, yellow };
TrafficLight枚举类型定义了3个常量:0,1,2 分别和名字red,green以及yellow关联。
可以在{}内赋值
数组与指针
(1)例如int ia[5]
使用数组时一般会转换为指针
ia是一个int*类型的指针常量
ia和&ia[0]都表示数组第一个元素的地址
(2)auto和decltype与数组名
当使用数组名作为一个auto 变量的初始值时,得到的类型是指针而不是数组
decltype(数组名)返回的是数组类型:大小和元素类型
begin与end
(1)定义
在头文件<iterator>中定义
(2)使用
begin(数组名)
返回指向数组第一个元素的指针
end(数组名)
返回指向数组最后一个元素的下一个位置的指针

标准库类型string
(1)使用
string 表示可变长度的字符序列
使用string 类要包含头文件<string>
(2)定义与初始化string
默认初始化
string a;
拷贝初始化
string a=b
string a="abcd"
直接初始化
string a("welcome");
string a(5, 'b');     a的内容是bbbbb
(3)注意
判断string对象是否为空
empty()函数判断string对象是否为空,返回一个布尔值
计算string对象长度
使用size()函数

标准库类型vector
(1)使用
要使用vector,必须包含头文件<vector>
(2)定义与初始化
vector<元素类型> 变量名;    
(3)操作
v.empty()
v.size()
v.push_back(t)    将一个值添加到vector的末尾,并使vector的大小增加
v.pop_back()      删除vector对象末尾的元素

二丶函数
1丶定义函数
(1)返回类型  函数名(参数列表) { 函数体 }
例如
int fact(int n)
{                     
int ret = 1;
while ( n > 1 )    
    ret *= n--;
return ret;        
}    
(2)    函数必须指定一个返回类型
函数返回类型可以是内置类型、复合类型或用户自定义的类类型
如果函数不返回任何结果,将其返回类型声明为void
2丶调用函数
函数名(实参列表);
例如
nt main(){ 
int val = fact(5);
cout << "5! = " << val;
}
3丶函参传递
(1)按值传递
把实参的值复制到形参的存储区中,即用实参值初始化形参
(2)传引用,按引用传递参数
当形参是引用类型时,对应的实参被称为按引用传递,或者传引用调用函数
(3)传递方式的选择
对于内置类型的小对象,传值的方式更简单直接
对于类类型的对象,尽量使用引用传递参数,效率更高
使用const限定可以避免实参被修改
4丶函数的调用
函数调用会使程序的控制权传递给被调函数,而当前活动函数的执行被挂起
5丶return语句
return语句结束当前正在执行的函数,将控制权返回给函数的调用者
6丶尾置返回类型的语法形式
auto 函数名(形参列表) -> 返回类型;

(二)函数重载
1丶C++函数重载机制
多个函数可以共享同一个函数名,针对不同的参数类型提供不同的操作
2丶重载函数
如果同一个作用域内的几个函数名字相同但形参列表不同,则它们是重载函数

(三)作用域与存储类型

1丶生存期,作用域与存储类型

对象的生存期 是指程序执行过程中对象存在的时间 对象的生存期与对象的作用域和存储类别密切相关

名字的作用域 程序的一段区域,名字的作用域指的是该名字可以在哪些程序文本区使用。

对象的存储类别 创建对象时分配内存空间的方式和内存空间的类型

2丶全局变量与全局函数

在全局作用域中可以定义函数和变量

在程序整个执行过程中都存在,可以在整个程序中使用

3丶存储类别和存储空间分配

分为静态存储 自动存储 动态存储

三丶感悟
这个学期的c++明显比上一学期要难很多,我有很多不会的东西,在今后的时间里需要投入更多的时间去学习c++。努力提高自己的水平

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值