C++入坑

一门中级语言,具有面向过程,面向对象的编程范式。

扩展名为cpp

hello world

使用g++编译

一个C++程序

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

编译

PS C:\Users\mingm\Desktop\cpp> g++ hello.cpp
PS C:\Users\mingm\Desktop\cpp>

运行

PS C:\Users\mingm\Desktop\cpp> C:\Users\mingm\Desktop\cpp\a.exe
Hello, world!
PS C:\Users\mingm\Desktop\cpp>

使用ide,clion进行配置。输出如下

基本语法

对象,对象具有状态和行为

类,可以定义描述对象的行为的状态和模板

方法,一个方法表示一种行为。

即时变量,对象的状态由即时变量表示

基本结构

#include <iostream>
using namespace std;

int main(){
	cout << "hello world";	// 输出hello world
	return 0;
}

数据类型

定义一个新的类型

	typedef int feet;	// feet为int的另一个名称
	feet distance;	// 创建一个整形变量

枚举类型

给变量设置一个集合,该变量的值只能从该集合中取为枚举类型。且,转为int类型的初始值为0~6,可以设置其int值

java也有枚举类型,

	enum color {
		red, green, blue
	}c = color(2);	// 枚举类型不能直接赋值,可以强制类型转换进行赋值
	c = blue;	// 可以自己赋值枚举的值
	c = color(0);	

枚举不可进行算术运算,可与参与其他类型的运算,会自动转换成为int类型的,并且枚举的数值可以相同。

枚举适合和switch搭配

如果不需要转换

请使用class,禁止进行转换

变量定义

#include <iostream>
using namespace std;

// 变量声明
extern int a,b;

int main(){
	// 变量定义
	int a, b;

	// 变量初始化
	a = 10;

	cout << a << endl;
	
	return 0;
}

C++ 储存类

register

定义一个储存在寄存器中值,应用场景,计数器

register int miles;

static储存类

即,静态变量

extern

提供全局变量的引用。在另一个文件声明全局变量和函数

循环

#include <iostream>
using namespace std;

int main(){
	for(int i = 0; i <= 10; i++){
		cout<< i << endl;
	}
}

判断

函数

#include <iostream>
using namespace std;

// 函数声明
int max(int num1, int num2);

int main(){
	int a = 100;
	int b = 200;
	int ret;

	ret = max(a,b);

	cout << ret << endl;

	return 0;
}

// 函数返回较大的数
int max(int num1, int num2){
	int result;

	if(num1 > num2)
		result = num1;
	else
		result = num2;

	return result;
}

函数调用的默认值

// 函数返回较大的数
int max(int num1, int num2 = 20){
	int result;

	if(num1 > num2)
		result = num1;
	else
		result = num2;

	return result;
}

如果调用的时候未添加值,将会直接使用默认值

匿名函数

看到这个词好亲切

匿名函数,将函数看成对象,函数可以像对象一样使用。

其格式为

[](){}

第一个[]为值的获取,(js中有用闭包获取值的)第二个为返回值,第三个为函数体

#include <iostream>
using namespace std;

int main(){
    int i = 1024;
    auto func = [=]{    // 表明外部变量为拷贝
        cout << i << endl;
    };
}
#include <iostream>
using namespace std;

int main(){
    int i = 1024;
    cout << &i << endl;
    auto fun1 = [&]{    // 进行引用
        cout << &i << endl;
    };
}
#include <iostream>
using namespace std;

int main(){
    int i = 1024, j = 2048;

    cout << j << endl;
    cout << i << endl;

    auto fun1 = [=, &i]{    // 拷贝外部变量,但引用i
        cout << i << &i << endl;
        cout << j << &j << endl;
    };
    fun1();
}

this 为指向其对象的类

数字

随机数

设置种子。生成伪随机数

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main(){
	int i,j;

	// 设置种子
	srand((unsigned)time(NULL));	// 根据系统当前时间,设置种子

	cout << "生成随机数" << endl;
	//生成10个随机数
	for(i = 0; i < 10; i++){
		// 生成随机数
		j = rand();
		cout << "随机数" << j << endl;
	}

	return 0;
}

数组

C++支持数组的数据结构

#include <iostream>
using namespace std;

#include <iomanip>
using std::setw;

int main(){
	int n[10];	// n 是一个包含10个整数的数组

	// 初始化数组
	for(int i = 0; i < 10; i++){
		n[i] = i + 100;	// 设置元素的值
	}
	cout << "Element" << setw(13) << "value" << endl;

	// 输出数组
	for(int j = 0; j < 10; j++){
		cout << setw(7) << j << setw(13) << n[j] << endl;
	}

	return 0;
}
PS C:\Users\mingm\Desktop\cpp> C:\Users\mingm\Desktop\cpp\a.exe
Element        value
      0          100
      1          101
      2          102
      3          103
      4          104
      5          105
      6          106
      7          107
      8          108
      9          109
PS C:\Users\mingm\Desktop\cpp>

字符串

C风格字符串

C++引入string类型类

#include <iostream>
#include <string>

using namespace std;

int main(){
	string str1 = "hello";
	string str2 = "world";
	string str3;
	int len;

	// 复制数组
	str3 = str1;
	cout << "str3: " << str3 << endl;

	// 连接string
	str3 = str1 + str2;
	cout << "str1 + str2; " << str3 << endl;

	// 计算连接后长度,使用size()方法
	len = str3.size();
	cout << "str3.size():" << len << endl;

	return 0;
}
PS C:\Users\mingm\Desktop\cpp> C:\Users\mingm\Desktop\cpp\a.exe
str3: hello
str1 + str2; helloworld
str3.size():10
PS C:\Users\mingm\Desktop\cpp>

C++指针

和C指针一样

引用

和指针区别

  1. 不存在空引用
  2. 一旦被初始化为对象,不能更改引用的对象
  3. 引用必须在创建的时候初始化

属于别名

引用作为参数

#include <iostream>
#include <string>

using namespace std;

void swqp(int& x, int& y);

int main(){
    // 声明
    int a = 100;
    int b = 200;
    int& c = a;
    cout << c << "C的值" << endl;
    cout << &c << "C的地址" << endl;
    cout << a << "a的值" << endl;
    cout << &a << "a的地址" << endl;   // 验证对于引用来说,地址为相同的。

    cout << "交换前,a的值" << a << endl;
    cout << "交换前,b的值" << b << endl;

    /*调用函数交换值*/
    swap(a,b);

    cout << "交换前,a的值" << a << endl;
    cout << "交换前,b的值" << b << endl;

    return 0;

}

// 函数定义
void swap(int& x, int& y){
    int temp;
    temp = x;	// 进行的是地址交换
    x = y;
    y = temp;

    return;
}

除此之外,引用还可以作为函数的返回值进行返回

日期,时间

获取当前日期和时间

#include <iostream>
#include <ctime>

using namespace std;

int main(){
    time_t now = time(0);

    char* dt = ctime(&now);

    cout << "本地日期时间" << dt << endl;

    tm *Itm = localtime(&now);

    // 输出结构的各个部分
    cout << "year" << 1900 + Itm->tm_year << endl;	// unix时间
    return 0;
}

输入输出

cout

标准输出流

endl表明添加一个换行符

cin

标准输入流

#include <iostream>

using namespace std;

int main(){
    char name[50];

    cout << "请输入名称";
    cin >> name;	// 将输入流输入name变量中
    cout << "您的名称为" << name << endl;
}

与流提取运算符联合使用

C++结构体

和C语言并无两样。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏liulun

Nim教程【八】

有序类型 值连续的枚举类型、整型、字符类型、布尔类型(还有这些类型的变种), 都可以称之为有序类型,Nim为有序类型提供了一系列特殊的方法 方法签名 方法...

22060
来自专栏海天一树

小朋友学经典算法(12):分割字符串

在分割字符串之前,先来了解一些跟字符串相关的变量或函数: (1)size_type:size_type由string类类型和vector类类型定义的类型,用以保...

13920
来自专栏企鹅号快讯

宝宝都能学会的python编程教程5:循环-2

“死循环”是必须要避免的,当然“活循环”也未必都要执行完。 break 语句 比如我们要从一个列表中找到某个特定元素,那么只要找到了这次循环就可以停止了,没有必...

21870
来自专栏GreenLeaves

C# static

本文,在大文豪的static与C#中的static随笔基础上修改,增加了几个关键知识点 1、static 关键字简介 static是C#中经常使用的关键字之一,...

18050
来自专栏蓝天

shell数组

$ A=(a b c def) ================================================== $ echo ${A[@...

12140
来自专栏Laoqi's Linux运维专列

匿名函数

10750
来自专栏我和PYTHON有个约会

24. 企业级开发基础5:面向对象特征(封装)

在我们程序开发过程中,定义好类型之后就可以通过类型来创建对象 如:我们定义一个中华人民共和国公民的类型

9310
来自专栏老司机的技术博客

人人都能学会的python编程教程5:循环-2

比如我们要从一个列表中找到某个特定元素,那么只要找到了这次循环就可以停止了,没有必要非得走到最后。

43280
来自专栏程序员同行者

Python中的join()函数的用法

Python中有join()和os.path.join()两个函数,具体作用如下:     join():    连接字符串数组。将字符串、元组、列表中的元素以...

7910
来自专栏用户画像

String s=new String("abc")创建了几个对象?

String str=new String("abc");   紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?

15010

扫码关注云+社区

领取腾讯云代金券