C/C++基本知识(二)
来源:互联网 发布:如何统计重复数据 编辑:程序博客网 时间:2024/05/24 23:15
from http://blog.csdn.net/peng825223208/article/details/41476581
接上:
23、结构体初始化使用大括号或多层大括号(有嵌套时)。
结构体整体赋值:两个同类型的结构体对象之间整个结构体赋值方法:
a)将所有成员赋值一遍(最差方法)
b)使用memcpy赋值
c)用“=”号赋值
24、memset函数90%以上使用是为了一段内存清零,例如:memset(&i,0,sizeof(int)) 单位是一个字节
25、.h头文件中不可以定义变量和全局函数,因为头文件可以被多个cpp包含并使用,这样会出现重定义。
26、假如结构体做参数,不建议void print(struct SStud S)这样写,因为效率低,它又复制了一个结构体,建议使用别名和指针变量:void print(struct SStud *pStud)
27、switch中的case一般不要超过三行,否则会降低可读性。
28、a)函数声明可以放在头文件中,函数体不可以放在头文件中。
b)带extern全局变量声明可以放在头文件中
c)常量声明(定义)可以放在头文件中,因为它的值是不能改变的。
d)结构体声明(定义)可以放在头文件中
29、学习文件操作四大函数:a)打开文件 fopenb)关闭文件 fclosec)读文件 freadd)写文件 fwrite
fopen可以查找文件是不是存在(根据它的返回值判定,返回值为NULL,则不存在,注意"r"只读模式)
void CStudent::load()//打开文件void CStudent::save() //保存文件
{ {
FILE *fp = fopen("./stud.lv","rb"); FILE *fp = fopen("./stud.lv","wb");
DATA data; SNode *p = m_pHead;
while(fread(&data,1,sizeof(data),fp) > 0) while(p)
addHead(data); {
fwrite(p,1,sizeof(DATA),fp);
fclose(fp); p = p->pNext;
} }
fclose(fp);
}
30、学习数据结构有什么意义?(因为很多语言都有继承好的封装包)
a)增长科班素质
b)学习过程中,加强学生的代码逻辑能力
c)公司面试的时候,会考到。比如:链表排序,链表反序。
31、再次强调:清理堆内申请的内存空间(在退出时)
32、const:const int i=10;//只读的,常变量,必须初始化
33、相比于const和define,枚举是最流行的,在定义变量时。因为1)可读性比较强,2)还可以对变量类型和取值进行限定,3)还可以自动去除重复。
顺便找了个小例子:
#include <iostream>using namespace std;void main(){enum day{sunday,monday,tuesday,wendsday,thursday,friday,stadurday};day today; today=monday;if (today==sunday||today==stadurday){cout<<"休息日\n";}elsecout<<"工作日\n";}
34、常量指针和指针变量
(1)常量指针:指向常量的指针,例如:const int i=10;//常变量 const int *p=&i //常量指针
a)格式是const在指针定义最前面,功能是防止修改指针指向内存的数值
b)进制赋值操作,允许偏移操作,允许读取操作
(2)指针常量
int *const p = &argc; *p=888//允许对指向的目标地址上的数据进行修改,不允许修改指向的地址
特点:允许赋值操作,进制偏移操作,允许读取操作
35、C++场景的link错误时:头文件有声明,cpp中没有实现。
36、指针数组的原理和使用方法
定义:数组中的每个元素都是指针变量的类型(占四个字节)
例:char str[] = {'a','b','c'};
char *pStr[] = {"abc","str","era"}; pStr[0]的类型是char *
37、类对象做成员变量的构造和析构顺序
a)类内的类对象先构造,按照类内对象定义顺序先后构造
b)类内对象构造完后,类自身才开始构造
c)析构与构造函数相反
38、函数指针:对于相似的函数,可以用到函数指针。
例如:int add(int a, int b) 和 int sub(int a, int b) 我们可以定义一个函数指针指向他们
int (*as)(int a, int b),使用时,a = add;这样之后,*a相当于add的别名了。
注意:在这加上typedef之后就成类型了,比如:typedefint (*as)(int a, int b); 定义一个as类型的对象a:as a;
39、保存和读取链表中的数据到文件的顺序为:
save:堆--->栈--->文件
load:文件--->栈--->堆
40、只读成员函数
a)只读成员函数是const置于成员函数右括号之后修饰的成员函数
b)(状态是)该成员函数不修改成员变量的数据;也就是说成员函数中出现的数据成员仅为右值
c)没有只读的构造和析构函数,只读对象和普通对象用同一个构造和析构函数
d)要对成员数据进行设计的函数,不能使用const只读函数,原因请看(b)
e)返回值是引用类型的时候,返回的变量是本类的成员,也不能使用const只读函数
f)当两个版本并存时,系统调用不带const的函数,只读的成员函数仅仅用于只读对象
g)只读对象不可以调用非只读函数,此时调用带const的只读函数。
41、只读对象
定义:关键字const限制的对象(const CTest t 或const CTest *pt或const CTest &t)
a)只读成员函数存在的意义,主要就是为了只读对象能调用本类的成员函数(读取类内部数据)
b)非只读对象也可以使用只读成员函数,非只读对象对于只读函数和普通函数都可以调用。
c)对象定义时,加上了const关键字限制之后,所有的类内数据变成了只读函数。
d)原因是在只读成员函数中,this的类型是const CTest *this(CTest是函数名),所以对象也是这样
42、只读成员变量
a)只读成员变量赋值,只能在构造函数的初始化列表中。
b)普通成员变量既可以在构造函数的初始化列表中进行赋值,也可以在构造函数或其他成员函数中赋值
c)每个对象内的只读成员变量的数值根据对象的不同,数值可能是不同的。
43、静态成员变量与静态成员函数
a)const关键字解决的问题是:只读与不只读
b)static关键字解决的问题是:是否在全局区
static关键字的用法
a)地址在全局区
b)只有在第一次进入函数时初始化
c)生命期在离开main函数之后结束
d)每次进入函数时不重新初始化,保留进入函数之前的数值
static全局变量的用法(C语言)
a)普通全局变量可以跨文件用extern关键字引用
b)static全局变量不可以用extern关键字跨文件引用
c)加了static关键字修饰,不同的源文件之间可以有同名的全局变量,因为static全局变量的含义是本源文件专有
static成员变量的用法(C++语言)
a)在类外进行全局变量的定义(初始化)
b)当类内变量前加上static关键字,就是静态成员变量
c)静态成员变量的地址在全局区,是全局性质的变量
d)只是名义上划归为某类内,但是该类的空间不包括静态成员变量
e)调用方法可以用对象或this指针,也可以直接用类名加作用域符::调用
f)静态成员变量一般定义共有,跟对象无关
44、static成员函数
a)一个成员函数如果前面加上static关键字就是全局函数的性质
b)只是名义上划分为某类内,函数内没有this指针的形式参数
c)静态成员函数内不可以通过this指针调用本类的成员函数和成员变量
- C/C++基本知识(二)
- C/C++基本知识(二)
- C基本知识
- C/C++基本知识(四)
- C/C++基本知识(一)
- C/C++基本知识(三)
- C/C++基本知识(一)
- C/C++基本知识(三)
- 【windows C语言程序设计】 使用ListBox控件,基本知识的准备和研究(二)
- 黑马程序员:C语言基本知识(1)
- 黑马程序员:C语言基本知识(2)
- 黑马程序员:C语言基本知识(3)
- 黑马程序员:C语言基本知识(4)
- C语言的基本知识整理(2)
- C/C++基本知识
- C,C++基本知识
- c语言基本知识点滴
- Objective C 基本知识
- 视频摘要与检索
- struts2 yingyong
- 我看保护模式
- 设计模式--策略模式
- Android应用源码基于安卓的个人隐私监控项目
- C/C++基本知识(二)
- 项目不能够加入tomact
- python的xlrd模块(读取excel表格)
- Ubuntu Mate:扩展存储到整张SD卡
- GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名
- C# txt文本读取最后X行
- leetcode之路026 Remove Duplicates from Sorted Arrayy
- Android--Support V4, V7, V13的作用与用法
- 南阳oj Registration system 题目991