培训部分
数组名有两个含义
1 代表数组首地址
2 代表数组变量
当对数组名取地址的时候 ,为第二种用法,此时整个数组看做是一个整体,取珍整个数组的首地址,形式上看做把一个一维数组变成了一个二维数组
数组在内存中是连续存放的
通过测试发现连续声明两个数组的位置也是连续的
静态变量会自动初始化为0
用变量指定数组的个数的数组叫变长数组,在C99标准中财能用
多维数组可以第一维不声明而其他维必须声明
引用是c++的内容
如果没有指定return,系统默认返回return 0
exit标准函数可以立即结束整个程序,需包含stdlib.h
形参为void,表示没有任何形参,也可以表示接受任何形参
数组作为形参可以省略形参的个数,由于是传入的指针,所以需要额外提供一个参数用来传递数组的个数
fopen,fclolse,fread,fwrite
fread和fwrite在操作时会移动文件指针到指定的位置,所以可以用while循环来操作,如果到了文件末尾会返回0
由于文件的指针位置会被移动,所以需要fclose或者fseek来重置文件指针
代码段,全局段,栈,堆
代码段包括所有代码和极少数全局变量
全局段包括各种静态变量
栈是每个函数内部的空间,用完后就释放.
栈区是对栈底进行操作
后声明的元素在下面,下面的地址比上面的地址下
也就是说系统在最新开辟空间的时候是以一个大地址开辟,然后每个变量地址逐个减小
不同类型数据在栈空间内不是连续排列
同类型数据连续排列
另外要考虑4k对齐
堆区基本都是new出来的对象,生命周期由程序员自己定
迭代和递推
递推是用循环的思路解决迭代
'\0'的ascll码为0
指针为32位,所以记录指针可以用int存储然后强制转换
字符串字面量可以直接连接,"aaa""bbb",可以直接被连成"aaabbb"
字符串字面量在内存中只有一份,多余的不会被保存
str系和file系函数,省略
str要小心越界
file要小心文件指针的位置
SEEK_SET 1 文件开头
SEEK_CUR 2 当前文件指针位置
SEEK_END 3 文件末尾
在多文件中,static只在文件内有效
全局变量在定义的时候不会出现重定义,赋值之后才会出现重定义
多文件中有相同的名字的全局变量以先被赋值的为准
全局变量在其他文件中,加不加extern效果一样,但是必须得声明
自学部分
++i比i++多消耗一个临时变量,所以尽量使用++ii
谓词函数
int func(int(*a)(int,int) )
{
return a(10,5);
}
a是一个函数名
将函数的函数名传入, 当作一个指针来读取
explicit关键字 auto_ptr在构造函数中调用。
所以智能指针不能用赋值号来赋值
智能指针在传递的时候会移交控制权,如果传递给一个局部,控制权会交给局部,而局部释放时候对象就丢失了
template后的参数不一定非要全用到
template <class X,class T,class U>
inline const X max(const T& a,const U& b)
{
std::cout<<sizeof(U)<<std::endl;
return (X)(a>b)?a:b;
}
cout<<std1::max<float>('6',22)<<endl;
模板特化需要有一个通用模板才能找到特化版本
抛出异常直接在函数名后面加
void f() throw(){}
namespace::class::operator+(x,y);
重载的操作符可以直接这样使用
如果用异或来交换不能使用浮点类型,标准库还是使用了一个临时变量来交换
vector 尾部操作快速,中间叫做费时,可以使用下标直接访问,本质上就是array
deque 首部和尾部操作快速,中间操作费时
list 在任何位置添加和删除非常快速,一个双链表
set/multiset 使用平衡二叉树存储,任何一个元素的左子树的所有元素,永远小于右子树的所有元素
map/multimap
可以使用make_pari(x,y)来存储
也可以coll[x]=y;
迭代器都有const版本 const_iterator
算法
头文件 algorithm
数组名有两个含义
1 代表数组首地址
2 代表数组变量
当对数组名取地址的时候 ,为第二种用法,此时整个数组看做是一个整体,取珍整个数组的首地址,形式上看做把一个一维数组变成了一个二维数组
数组在内存中是连续存放的
通过测试发现连续声明两个数组的位置也是连续的
静态变量会自动初始化为0
用变量指定数组的个数的数组叫变长数组,在C99标准中财能用
多维数组可以第一维不声明而其他维必须声明
引用是c++的内容
如果没有指定return,系统默认返回return 0
exit标准函数可以立即结束整个程序,需包含stdlib.h
形参为void,表示没有任何形参,也可以表示接受任何形参
数组作为形参可以省略形参的个数,由于是传入的指针,所以需要额外提供一个参数用来传递数组的个数
fopen,fclolse,fread,fwrite
fread和fwrite在操作时会移动文件指针到指定的位置,所以可以用while循环来操作,如果到了文件末尾会返回0
由于文件的指针位置会被移动,所以需要fclose或者fseek来重置文件指针
代码段,全局段,栈,堆
代码段包括所有代码和极少数全局变量
全局段包括各种静态变量
栈是每个函数内部的空间,用完后就释放.
栈区是对栈底进行操作
后声明的元素在下面,下面的地址比上面的地址下
也就是说系统在最新开辟空间的时候是以一个大地址开辟,然后每个变量地址逐个减小
不同类型数据在栈空间内不是连续排列
同类型数据连续排列
另外要考虑4k对齐
堆区基本都是new出来的对象,生命周期由程序员自己定
迭代和递推
递推是用循环的思路解决迭代
'\0'的ascll码为0
指针为32位,所以记录指针可以用int存储然后强制转换
字符串字面量可以直接连接,"aaa""bbb",可以直接被连成"aaabbb"
字符串字面量在内存中只有一份,多余的不会被保存
str系和file系函数,省略
str要小心越界
file要小心文件指针的位置
SEEK_SET 1 文件开头
SEEK_CUR 2 当前文件指针位置
SEEK_END 3 文件末尾
在多文件中,static只在文件内有效
全局变量在定义的时候不会出现重定义,赋值之后才会出现重定义
多文件中有相同的名字的全局变量以先被赋值的为准
全局变量在其他文件中,加不加extern效果一样,但是必须得声明
自学部分
++i比i++多消耗一个临时变量,所以尽量使用++ii
谓词函数
int func(int(*a)(int,int) )
{
return a(10,5);
}
a是一个函数名
将函数的函数名传入, 当作一个指针来读取
explicit关键字 auto_ptr在构造函数中调用。
所以智能指针不能用赋值号来赋值
智能指针在传递的时候会移交控制权,如果传递给一个局部,控制权会交给局部,而局部释放时候对象就丢失了
template后的参数不一定非要全用到
template <class X,class T,class U>
inline const X max(const T& a,const U& b)
{
std::cout<<sizeof(U)<<std::endl;
return (X)(a>b)?a:b;
}
cout<<std1::max<float>('6',22)<<endl;
模板特化需要有一个通用模板才能找到特化版本
抛出异常直接在函数名后面加
void f() throw(){}
namespace::class::operator+(x,y);
重载的操作符可以直接这样使用
如果用异或来交换不能使用浮点类型,标准库还是使用了一个临时变量来交换
vector 尾部操作快速,中间叫做费时,可以使用下标直接访问,本质上就是array
deque 首部和尾部操作快速,中间操作费时
list 在任何位置添加和删除非常快速,一个双链表
set/multiset 使用平衡二叉树存储,任何一个元素的左子树的所有元素,永远小于右子树的所有元素
map/multimap
可以使用make_pari(x,y)来存储
也可以coll[x]=y;
迭代器都有const版本 const_iterator
算法
头文件 algorithm
587

被折叠的 条评论
为什么被折叠?



