快速学习C++

最近一直用python,之前学过的C++已经忘得差不多了,最近打算重新拾起来!

我用的编译器是CodeBlocks,网上有很多教程,自行安装即可。

1、

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello, world!" << endl;
    return 0;
}

输出结果为:(这里也可以将endl替换成"\n"或者直接在输出的内容后面加"\n",即cout << "Hello, world!\n";)

如果不加后面的<< endl或者<< '\n',输出结果为:(没有换行)

也可以使用多个<<,用于输出多个值(相当于python中的+)

#include <iostream>
using namespace std;
int main()
{
    cout << "1 " << "2";
    return 0;
}

输出结果为:

2、

单行注释:以//开始,直到行末为止

多行注释:以/*开始,以*/结束

3、七种基本的C++数据类型:

布尔型——bool——true或false

字符型——char

整型——int

浮点型——float

双浮点型——double

无类型——void

宽字符型——wchar_t(typedef short int wchar_t,所以wchar_t实际上的空间和short int一样)

(typedef为一个已有的类型取一个新的名字)

3、空格符(" ")和空字符("\0")

(1)空字符的长度为0,空格符的长度为1

(2)

char a[] = "a b";  //输出是a b
char b[] = "a\0b"; //输出是a(因为遇到"\0"代表结束)

4、常用函数

(1)sizeof(a):获取a所属数据类型的大小

(2)生成随机数:

rand():该函数只返回一个[seed, RAND_MAX)区间中的伪随机数。

生成随机数之前必须要先调用srand()函数为rand()生成随机数种子。

用来指定种子的函数,若不显式调用则系统默认调用srand(1)来指定rand()的初始化种子。srand函数指定的种子会对应一个随机数系列,所以当你用srand指定一样的种子时,rand出来的随机数序列总是一样的。当然为了防止一样,一方面我们可用流逝的时间作为种子,即用time函数来获取系统时间,time函数会返回一个time_t的数据,表示1970年1月1日0时0分0秒开始到目前的时间间隔,单位为秒,然后我们将这个time_t类型的数据转换为unsigned类型就可以srand成种子了,即srand((unsigned)time(0)或srand((unsigned)time(NULL)。还有一个办法是利用程序的ID来作为初始化种子,即srand((unsigned)getpid())。
 

要取得[0,n)  就是rand()%n,表示 从0到n-1的数;

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;

要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;

要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;

通用公式:a + rand() % n;其中的a是起始值,n是整数的范围

(3)setw()

cout<<‘s’<<setw(8)<<‘a’<<endl;

输出显示s和a之间有7个空格。

setw()只对其后面紧跟的输出产生作用,默认右对齐。如上例中,表示a共占8个位置,保持右对齐,不足的位置用空格填充。若输入的内容超过setw()设置的长度,则按实际长度输出。

5、变量定义

(注意区分定义和声明:除非有extern关键字,否则都是变量的定义;在一个程序中,变量只能定义一次,却可以声明多次;定义时会分配存储空间,而声明不会)

例如:
int i; //定义单个
int i, j, k; //也可以定义多个,多个之间用逗号分隔
变量在定义的时候也可以初始化值:
int i = 1;
int i = 1, j = 3, k = 5;

对于函数声明:如果在函数调用之前没有函数定义也没有函数声明,则函数调用出错。只要在函数调用前进行函数声明,则函数的定义可以在任何地方,否则就要把函数定义在函数调用前面(也就是子函数放到main函数前面)。

// 函数声明
int func();
 
int main()
{
    // 函数调用
    int i = func();
}
 
// 函数定义
int func()
{
    return 0;
}

6、局部变量和全局变量

局部变量:在函数或一个代码块内部声明的变量,局部变量只能在函数内部或者代码块内部使用。

全局变量:在所有函数外部声明的变量,全局变量在整个程序内使用。

注意:局部变量和全局变量的名称可以相同,但是在函数内部,局部变量的值会覆盖掉全局变量的值(也就是函数内部局部变量起作用),在函数外部仍然时全局变量起作用。

7、字符常量(包括转义序列)被括在单引号中,字符串常量被括在双引号中。

8、定义常量

//一般都把常量定义为大写字母
#define LENGTH 100
#define NEWLINE '\n'
也可以把常量定义为指定类型的常量
const int LENGTH = 100;
const char NEWLINE = '\n';
(注意#define后面没有分号,const后面要有分号;#define不使用等号,const使用等号)

9、运算符

(1)关系逻辑运算符

&&——与运算(如果两个操作数都非零,则为真)

||——或运算(如果两个操作数中有任意一个非零,则为真)

!——非运算(如果操作数为真,则!后为假,反之同理)

(2)位运算符

&——按位与(AND)(两位都为1,则结果为1,否则为0)

|——按位或(OR)(两位只要至少有一个为1,则结果为1,否则为0)

^——按位异或(XOR)(两位不同则为1,否则为0)

~——按位“翻转”(1变成0,0变成1)

<<——二进制左移运算符

>>——二进制右移运算符

(3)杂项运算符

Condition ? X : Y——条件运算符(如果Condition为真,则值为X,否则为Y)(可以替代if…else语句)

&——指针运算符(返回变量的地址)

*——指针运算符(指向一个变量)

10、循环

(1)while循环

(2)for循环

(3)do…while循环

注:for( ; ; )——无限循环(可以按Ctrl+C终止无限循环)

11、循环控制语句

(1)break

(2)continue

(3)goto

12、判断语句

(1)if…

(2)if…else if…else
 

if()
{}
else if()
{}
else if()
{}
else
{}

(3)switch

switch(a)
{
    case 1:
        ……
    case 2:
        ……
    default:
        ……

}

13、定义函数

#函数定义
return_type function_name( parameter list )
{
   body of the function
}

return_type:函数返回的值的数据类型,有些函数不需要返回值,则return_type为void
parameter list:例如int num1, int num2,即参数名称前必须写清参数类型

#函数声明
return_type function_name( parameter list );
例如:int max(int num1, int num2);
或者int max(int, int);
因为在函数声明中,参数的名称不重要,只有参数的类型是必需的。

注意:当在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。在这种情况下,应该在调用函数的文件顶部声明函数。

14、函数参数

传值调用——将实参的值赋给形参,这种情况下,改变形参的值对实参无影响

#函数定义
void func(int x, int y)
#函数调用
func(a, b)

指针调用——将实参的地址赋给形参,在函数内,根据(形参中存储的)地址调用实参值,这种情况下,修改形参会影响到实参。

#函数定义
void func(int *x, *y)
#函数调用
func(&a, &b)

引用调用——将实参的引用赋给形参,在函数内,形参和实参对应同一个内存存储空间,是同一个对象,只是名字不同,这种情况下,修改形参会影响到实参。

#函数定义
void func(int &x, int &y)
#函数调用
func(a, b)

注:

&a(取址):如果是&a,a存的是一个值,&a即取出a的地址

*a(取值):如果是*a,a存的是一个地址,*a即取出a的值

15、数学函数

(1)cos(a):返回弧度角a的余弦值

(2)sin(a):返回弧度角a的正弦值

(3)tan(a):返回弧度角a的正切值

(4)log(a):返回参数a的自然对数

(5)pow(x, y):返回x的y次方

(6)hypot(x, y):返回两个参数平方和的平方根(也就是说,参数为一个直角三角形的两个直角边,函数会返回斜边的长度。)

(7)sqrt(a):返回参数a的平方根

(8)abs(a):返回整数a的绝对值

(9)fabs(a):返回一个浮点数a的绝对值

(10)floor(a):返回一个小于或等于参数a的最大整数

16、数组

(1)数组定义

例如:
int a[10];

(2)数组初始化

int a[5] = {1, 2, 4, 7, 10}
//花括号之间的元素数目不能大于数组指定的元素数目
//如果省略了数组大小,则数组的大小为初始化时元素的个数

(3)二维数组定义

int a[3][4] //3行4列的数组

(4)二维数组初始化

方法一:
int a[3][4] = {
    {0, 1, 2, 3}, //第一行
    {4, 5, 6, 7}, //第二行
    {8, 9, 10, 11} //第三行
}
方法二:
int a[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}

(5)

一维数组使用for循环输出每个元素;二维数组使用两层for循环输出每个元素。

17、字符串

string str1 = "Hello";
string str2 = "World";
string str3;
// 用加号可以进行字符串拼接
str3 = str1 + str2
// 求字符串长度
length = str3.size()

18、基本的输入输出

输入:cin >> xxxx;

输出:cout << xxxx << endl;

19、C++中的圆周率表示

Pi= acos(-1.0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值