第二章 C/C++快速入门

1.  C和C++部分区别

输入输出,指针引用

C语言的scanf和printf比C++的cin和cout要快

2. 头文件是什么

#include<stdio.h>

例如stdio是标准输入输出库,.h是头文件的文件格式。文件中包含一些跟输入输出有关的东西,程序需要输入输出的时候,需要引用头文件才能使用文件里的输入输出函数

在C++中,推荐使用cstdio代替stdio.h,即#include<cstdio>和#include<stdio.h>是等价的。其他文件例如math.h和cmath也是等价的,所以在C++中可以使用前缀加一个c并去掉后面.h

3. 主函数是一个程序的入口位置,一个程序最多只有一个主函数

int main(){
...
}

4. 输入输出

scanf("%d%d",&a,&b);
printf("%d",a+b);

scanf用来读入数据,%d是int型的输入输出标识

5. C++向下兼容C,对于C语言文件可以选择保存成.cpp格式

6. 变量名

不能是C语言标识符

第一个字符必须是字母或者下划线,吃了第一个字符以外,其他字符必须是字母、数字、下划线

变量名区分大小写

7. 整型用%d表示

短整型short

整型int:一般一个整数占用32位即4字节,10^9(2^31)以内都可以定义成int

长整型long long:一般一个整数占用64位即8字节,如果赋初值的时候待2^31-1则需要在初值后面加上LL否则编译错误

8. 浮点型用%f表示

单精度float,一个浮点数占用32位,1位作为符号位,8位作为指数位,23位作为尾数位,有效精度只有6-7位

双精度double,一个浮点占用64位,1位作为符号位,1位作为指数为,52位作为位数位,有效精度有15-16位,多使用double

9. 字符型用%c表示

ASCII码转换

0-9:48-57

A-Z:65-90

a-z:97-122

字符常量必须使用单引号

#include<stdio.h>
int main(){
    char c1='a', c2='b', c3=99;
    printf("%c%c%c",c1,c2,c3);
    return 0;
}
//返回结果是abc

10. 转义字符

代表空格

代表NULL

11. 布尔型

在C++可以直接用。在C中必须加stdbool.h才可以用

 取值是true和false,也可以复制整型常量,true=非零,false=零

#include<stdio.h>
int main(){
    bool flag1=0,flag2=true;
    int a=1,b=1;
    printf("%d %d %d
",flag1,flag2,a==b);
    return 0;    
}

12. 强制类型转换

格式:(新类型名)变量名

13. 符号常量和const常量

#define pi 3.14//末尾不加分号
#define ADD(A,B)((a)+(b))
const double pi=3.14;
//二者都是常量,一旦定义值就无法改变

14. 自增

i++;//先使用i后自增
++i;//先自增后使用i
#include<stdio.h>
int main(){
    int a=1,b=1,n1,n2;
    n1=a++;
    n2=++b;
    printf("%d %d
",n1,a);
    printf("%d %d
",n2,b);
    return 0;
}
//结果:
//1 2
//2 2

15. 条件运算符

( ? :)是C语言中唯一的三目运算符,A ? B : C;

如果A为真那么返回B,如果A为假那么返回C

16. 位运算符

<< 左移 a<<x 整数a按二进制左移x位

const int INF=(1<<30)-1 //表示无穷大

17. 赋值操作

int m,n;
n=m=5;//连等
n*=3;//即n=n*3

18. &取地址符

定义变量后,会在计算机内存中分配一块空间给该变量,&表示取得该变量的地址

除了字符串数组以外,输入都要加&,因为数组名称本身代表了第一个元素的地址

19. 除了%c以外,scanf对其他格式符(如%d)的输入是以空白符(即空格、换行等)位界数判断标志的

#include<stdio.h>
int main(){
    int a;
    char c ,str[10];
    scanf("%d%c%s",&a,&c,str);
    prinf("a=%d,c=%c,str=&s",a,c,str);
    return 0;
}

/*
输入数据:
1 a bcd
输出数据:
a=1,c= ,str=a
*/

20. 如果想输出%或者

printf("%%");//输出%
printf("\");//输出

21. 对其输出

%md,m位右对齐,高位用空格补

%0md,m位右对齐,高位用0补齐

%.mf让浮点数保留m位小数输出

#include<stdio.h>
int main(){
    double d1=12.3456;
    printf("%.0f
",d1);
    printf("%.1f
",d1);
    printf("%.2f
",d1);
    printf("%.3f
",d1);
    printf("%.4f
",d1);
    return 0;
} 

/*
12
12.3
12.35
12.346
12.3456
*/

22. getchar和putchar

putchar用来识别单个字符

getchar可以识别换行符

23. typedef给复杂数据类型起名来简化使用

例如给long long 数据类型命名为LL

#include<stdio.h>
typedef long long LL;
int main(){
    LL a=123456789012345LL;
    printf("%lld
",a);
    return 0;
}
//输出:123456789012345

24. 常用math函数,加上math.h头文件

fabs(double x):对x取绝对值

floor(double x):对x向下取整

ceil(double x):对x向上取整

pow(double r,double p):得出r^p

sqrt(double x):返回x的算术平方根

log(double x):返回x的以自然对数为底的对数

sin,cos,tan (double x)三角函数,参数要求是弧度值 const double pi = acos(-1.0) x=pi*45/180

round(double x):对x四舍五入

25. if语句

在if语句中,表达式是“!=0”或者“==0”那么可以简化

如果是“!=0”可以省略“!=0”,

如果是“==0”可以省略“==0”并在表达式前添加!

if(m){ //表示如果m不为0
...
}

if(!m){//表示如果m为0
...
}

26. switch语句

switch(表达式){

  case 1:

  case 2:

  case 3:

}

 如果不在case中加上break,则会从命中行开始顺序执行到结束

27. 左对齐和右对齐

printf("%-10d
",101010); //左对齐10位
printf("%10d",101010); //右对齐10位

28. 冒泡排序,每次香菱两个元素进行比较,每一趟排序后都有一个元素的位置被确定,整个过程执行n-1趟

29. memset:对数组中每一个元素赋相同的值

memset(数组名,值,sizeof(数组名));

需要添加string.h头文件

30. puts和gets

gets识别换行符 作为输入结束

puts用来输出一行字符串

31. string.h头文件

strcmp(字符数组1,字符数组2)

字典序

1<2返回负整数

1==2返回0

1>2返回正整数

strlen(字符数组)

得到字符的个数

strcpy(字符数组1,字符数组2)把一个字符串2赋值给另一个字符串1

strcat(字符数组1,字符数组2)把字符数组2街道字符数组1后面

32.sscanf和sprintf

sscanf(str,"%d",&n); 
sprintf(str,"%d",n);

sscanf:把字符数组str中的内容以%d的格式写到n中

sprintf:把n以%d的格式写到str字符数组中

#include<stdio.h>
int main(){
    int n;
    char str[10]="123";
    sscanf(str,"%d",&n);
    printf("%d
",n);
} 

//123

33.变量在内存中如何存放

每个变量存放在内存中分配的一个空间,每种类型变量所占的空间不一样。

每个字节都会有一个地址,计算机通过地址找到变量

34.指针

一个房间号指向一个房间。一个地址指向一个变量。

指针类似于变量的地址

&表示变量的地址

int a 是变量,&a 是他的地址

指针是一个unsigned类型的整数

35.指针变量

用来存放指针,或者说地址

给指针变量赋值的方式是把变量的地址取出来,赋给对应类型的指针变量

*是类型的一部分,因此*p代表值,p代表指针变量

int*是指针变量的类型,p表示变量名

数组名作为数组的首地址

36.引用

C++的引用不产生副本

对引用变量的操作就是对原变量的操作

常量不可以使用引用

37.结构体

构造函数的一个特点是它不需要写返回类型,且函数名与结构体名相同

38.cin与cout

get输入单个空白字符,可以接受空格回车等

getline输入包含空白的长字符串,可以接受空格,遇到回车停止

cin.getline(str,100);//读入数组str[100]

getline(cin,str);//string容器

原文地址:https://www.cnblogs.com/ak918xp/p/13184878.html