大学c++期末总结(3)

2018-12-22 20:10

符串对其进行整体的替换。 (2) 文件包含

即#include ,后面的头文件有两种形式,放在<>内或者是放在””内。<>内表示从系统自带的目录中寻找这个头文件。而””则是从该程序的根目录下开始找,如果找不到,再去系统自带的包含各种头文件的文件夹寻找。 (3) 条件编译

条件编译相当于条件语句,只不过在开始前执行。 #ifdef 标识符 #ifndef 标识符 #if 表达式 程序段 程序段 程序段 #else #else #else

程序段 #endif

程序段 #endif

程序段 #endif

用作头文件卫士,防止某些对象被重复定义。了解即可。

19:数组

(1) 定义数组时,数组的长度必须是常量表达式,某些没有在定义时规定大小的除外。 (2) 数组只有在被定义的时候才能进行初始化,否则就要依靠循环语句进行赋值。 (3) 二维数组可以看成特殊的一维数组,这个一维数组的每个元素都是另一个以为数组

的首地址。

(4) 数组名+1可以理解为从数组第一个元素的地址到第二个元素的地址。其中地址的

增加量由数组的具体类型(比如int型)和元素个数(一维,二维数组肯定不同)决定。但肯定不是+1!

(5) 当数组做函数的参数时,传递过去的是地址,所以在函数内对数组元素进行修改,

返回main函数后修改仍成立。

(6) 对于二维数组来说,无论是定义时还是作为函数的参数时,第二维的大小一定要有,

二维数组是按行优先的规则存放的。而且,系统在匹配形参时,对于二维数组的第一维大小是不检查的。也就是说,

这两种形式是等价的。

(7) 字符型的数组可以进行整体的输入输出,并且在初始化时可以用”字符串”的方式来

初始化。如:

(8) 在对其进行初始化时要注意,单个字符必须用单引号

(9)关于字符数组的函数 由于是字符数组,所以不能用单纯的运算符来进行操作。需要用对字符数组操作的函数: 1.Strcat(char[],const char []) 字符串连接函数 返回的是第一个数组的首地址。第二个参数也可以是字符

串常量。

2.Strcpy(char[],const char [])字符串拷贝(覆盖)函数 需要注意的是,第一个字符数组的原有内容将被清空,清空之后再进行拷贝。第二个参数也可以是字符

串常量。

3.Strcmp(const char[],const char [])字符串比较函数,从双方的第一个字符开始比较,比较标准是字符对应的ASCII码。如果相等,返回值=0,大于返回1,小于返回-1。这两个参数也可以是字符

串常量。

4.Strlen(const char[]) 从第一个字符开始到第一个’\\0’之前的字符个数。同

样的,参数也可以是字符

串常量。

上面所说的字符串常量并不是真的要求大于两个字符,而是在表示时,要用双引号表示而不是单引号。如果用双引号表示,那么就算只有一个字符也不会出错。

(10)字符串变量 string

需要在头文件中加上#include 可以直接用+ = 以及各种关系运算符。

因为不推荐使用,所以考的应该也不会很多。

String 变量在用字符串常量赋值以后,最后有终止符’\\0’. Sizeof(string)=16 (在vc++中)

同样的,对于string变量来说,也可以用变量名+[下标]的方式来访问单个字符。但是

它和数组绝对不是同一种东西,如果要深究的话,再来找我吧,如果只要过期末考试就不需要了。

特别要说明关于\\0的问题

会告诉我们,这个数组太小,但是我们明明只打了ab两个字符,为什么呢?

这是因为,在用字符串去初始化字符数组时,系统会自动加一个\\0,但是这个数组只有两个元素,所以说超过了边界。

另一方面,如果按照a数组的定义方式定义,不会报错,说明这样定义系统不会自动地加上\\0,当然,这样也会带来意想不到的问题。

因为没有\\0的存在,所以系统会自动地继续往下输出直到碰到\\0。

20:指针

(1) 所有指针变量都是占4个字节

(2) 指针不等于指针变量。指针表示的是某个变量的地址。而指针变量则是用来存

放该地址的变量。

(3) 在P指向一个数组的首地址时,注意*p++,*(p++),*(++p),(*p)++的区

别。

(4) 数组作为参数传递的时候,其实已经退化为指针的形式。

从这个实验可以看出,在传输过程中,在函数f内,数组a其实已经退化为指针。

(5) 指向多维数组的指针

其余的操作等效为特殊的一维数组。

(6) 对字符指针进行整体的输出操作时,步骤是先输出第一个元素,然后指针变量

加1(本身不变),然后继续输出。

(7) 对于int *p(int ,int)和int (*p)(int,int)的区别。(考虑*和()的优先

级)

左边的是返回值为指向整形指针的一个函数,而右边是一个指向函数的指针。

(8) 指针数组

定义: int *a[n] ,数组的每个元素都是一个指针变量。

(9) 对所有数据类型的指针的总结

Int * p 指向整形的指针

Int *p[n] 有n个元素的指针数组 Int *p(参数列表) 返回值为整形指针的函数 Int (*p)(参数列表) 指向函数的指针 Int **p p是一个指向指针的指针,它只能指

向int型的指针

(10) 指针可以相加减可以比较,但是在大多情况下没有实际意义。只有少数情况,

比如指向同一数组不同元素的两个指针相减或者是比较,可以得出相差几个元

素。

(11) 空指针:int *p=NULL ,其中NULL是系统预设常数0。所以p指针指向的地址

为0。

(12) 引用:相当于一个变量的别名,并不会开辟新的空间,它们的地址都是一样的。

所以在牵扯到函数的调用时,就会起到传址的效果。

(13) 用new和delete 新建和释放内存空间

每个new和delete 必须一一对应,如果delete多了,就会报错。 其中delete[] 指针变量 用来删除指针数组。

new(表达式1)[常量2] 小括号中的表达式1为指针指向的元素的初值,方括号中的常量2 为指针数组的大小。

21:对于传值和传址的总结

对于变量的修改,归根结底就是对于某一块被定义的内存空间的具体值的修改。而这个内存空间与地址有着密切的关系。 一个函数实现过程,只要没有牵扯到地址(包括数组,指针,引用),那么它就是一个传值的过程,函数的实现结果只能通过返回值来反映,对于同名变量由于作用域的不同,并不会发生变化。

22:结构体

(1) 结构体是用户自定义的一种数据类型,相当于其它高级语言的记录。(P194) (2) 对结构体变量进行初始化


大学c++期末总结(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:对海洋的重要性及南海和钓鱼岛问题的思考

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: