C++二级复习1

C++二级复习1

以下编辑于2019-03-24

1、字符串常量,系统会在末尾自动添加一个\0作为结束标志;字符数组,在末尾可以不添加\0,若添加,会改变数组的实际长度。

a={'a','b','c','d'}
strlen("abcd") > strlen(a)

2、求余数,需要两个皆是整型

3、float类型运算时,按照double处理

4、强制类型转换

(类型)(变量) 或  类型(变量)

5、逗号运算符

表达式1,表达式2,...,表达式n

依次求解每个表达式,整体的值为最后一个表达式的值

6、标准输入输出流的格式控制符,以后了解*(考试要考估计)

7、C++保留了C语言的 getchar() putchar() scanf() printf()

8、C+新的头文件

#include <cmath>					引入数学库

9、布尔变量
bool 类型 常量值只有 true 和 false
true 和非零值 均处理为1,false处理为0

10、逻辑变量
!(非)> &&(与)> ||(或)

11、条件运算符

表达式1 ? 表达式2 : 表达式3

先求解表达式1的值,为真,整个表达式的值等于表达式2的值,否则,等于表达式3的值

12、switch语句

switch()
{
	case 1:语句break;						一般情况
	case 2,3,4:语句 break;					多条件符合
	default : 语句 break;					所有条件都不符合则执行
}

13、函数的嵌套调用是不被允许的,即在一个函数内,完整的包含另一个函数。
(python好像可以,高阶函数里的返回函数或者匿名函数)

14、内置函数
适用于,规模小调用次数频繁的函数
在 函数 声明和定义函数体的时候,在前面加上 inline 即可,可以提高程序运行的效率。
此外,会增加主函数的代码长度,以及对于 含有循环,递归结构,switch语句以及很长的代码,指定为inline后,系统并不会照样执行。

15、重载函数,函数名多用
利用 相同的一个函数名,修改函数的类型,参数的类型,个数,顺序(函数体)
已达到 “一名多用的目的”,简单的说,就是免得写函数体,只要简单改改类型和参数就行了。

16、函数模板,这个感觉还是挺有用的
建立一个通用函数,类型和参数类型不具体制定,用一个虚拟的类型进行替代。
定义在主函数之前

template<typename T> 或 template<class T>
T max(T a,T,b)
{
	return (a>b)?a:b;
}

使用时,直接调用函数名即可

同样可以定义,多个类型参数

template <class T1,typename T2>

当然,这个模板只限于,对函数的参数个数,函数体相同,而类型不同的情况。

17、带有默认参数的函数
一般最好只在函数的声明里,指定默认值
一个函数不能同时做,重载函数和有默认参数的函数(少一个参数时会产生二义性)

以下编辑于2019-03-25

18、同一个源文件中,全局变量和局部变量同名,局部变量的作用范围内,全局变量将被屏蔽。

19、变量的属性–存储期
分为静态存储期和动态存储期,对应静态存储区(全局变量)和动态存储区(函数的形参,函数中定义的变量,函数调用时的现场保护和返回地址),
变量除了数据类型的属性外,还有存储类别,即数据在内存中的存储方法,即刚刚提及的两种,类别有4种,自动的(auto),静态的(static),寄存器的(register),外部的(extern)

自动变量,函数中的局部变量,不用static加以声明,编译系统对其动态分配存储空间。一般用auto作声明,可以省略。

静态局部变量(static)
局部变量的值在函数调用结束后,存储单元不释放,在下一次调用函数时,变量保留上一次调用结束时的值。
存储在静态存储区,整个程序运行期间都不释放,编译时赋初值,而后,每次调用时,重新赋值。

定义局部变量时,如果不赋初值,对静态局部变量来说,编译时,自动赋初值为0或者是空字符串,而对自动变量来说,测试一个不确定的值。(每次调用时,存储单元都释放了,下次需要重新分配存储单元)

缺点:多占内存,且降低可读性。

声明寄存器变量(register)
允许将只用频繁的变量放在CPU的寄存器中,无需再内存中读取,提高效率,一般编译系统会自动将合适的变量放在寄存器中。

声明外部变量(extern)
可以用extern对全局变量声明,扩展作用域
一般将全局变量的定义放在所有函数前,可以少声明一个extern,
两个文件中都使用了某个变量,可以在函数中声明一个外部变量,扩展作用域

声明静态外部变量(static)
本文件的全局变量前加上static,可以避免被其他文件误用,只作用于本文件的外部变量。

内部函数与外部函数
定义时,前面加上static,这样,该函数只限于被本文件中其他函数所调用。

函数首部加上extern/不加则默认为外部函数,可以在一个文件中调用其他文件中定义的函数,

使用函数原型,也可以扩展作用域,

#include 头文件名

头文件内,包含各个函数的声明即可,结构体,类等也可以。
(课程设计中,多文件组织形式)

20、头文件和标准库
一般包含:自定义类型声明:结构体,类
函数声明,内置函数定义,宏定义,全局变量定义,外部变量定义,
头文件是源文件的借口(.h文件与.cpp文件)

一般用户自己编写的头文件可以在文件名后面加上.h

21、一维数组初始化,可以只对一部分元素赋初值,其他默认为0,全部元素赋初值的时候可以不指定长度。
二维数组初始化,部分赋初值时,只对第一列开始的元素赋值,其余赋值为0,并且,一般来说,一维长度可以不指定,二维必须指定。

22、字符数组
基本的输入输出

char str[20];
cin>>str;
cout<<str;					输出整个字符串
cout<<str[4];				输出单个元素

23、C++的字符串函数

一般头文件声明string或string.h
char str1[30]="kagura and mea"
char str2[]="kemurikusa"
1、字符串连接函数,返回第一个字符数组的地址
cout<<strcat(str1,str2,n)
cout<<str1
两个输出得到相同的值,devc++可用

2、字符串复制函数,将后者中的字符(可以为字符串常量或字符数组)复制(覆盖)到前者中,n表示复制前n个字符
不可以直接直接赋值语句将常量赋给字符数组

char str1[10],char str2[]="klito"
strcpy(str1,"aqua");
strcpy(str1,str2);
strcpy(str1,str2,2);
devc++前者可用,后者不可(话说,明明写的一样的变量,给我报未声明,害的我害的复制前面声明的)

3、字符串比较函数strcmp

strcmp(str1,str2)
前者 等于,大于,小于 后者,返回0,一正整数,一负整数。

4、字符串长度函数strlen()

char str1[20]="asuaalice";
strlen(str1)
返回的是字符串的有效长度

有点太长了,另起一文,

猜你喜欢

转载自blog.csdn.net/weixin_43420243/article/details/88781736