从零到壹搞懂C++基础语法

  • C++ 完全支持面向对象的程序设计,包括面向对象开发的四大特性:封装、抽象、继承、多态

  • C++三个重要组成部分

  • 核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。

  • C++ 标准库,提供了大量的函数,用于操作文件、字符串等。

  • 标准模板库(STL),提供了大量的方法,用于操作数据结构等。

二、基本语法

========================================================================

1.解读一个简单的c++程序


代码如下:

#include

using namespace std;

// main() 是程序的执行入口

int main()

{

cout << “Hello World”;

return 0;

}

解读:

第一行 C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。上面这段程序中,包含了头文件 。引入的头文件中包含我们需要的函数或类,本例只引入了标准输入输出流,我们可以使用iostream在终端窗口进行交互。

下一行 using namespace std; 告诉编译器使用 std 命名空间。命名空间是 C++ 中一个相对新的概念。有了这个我们使用cin、cout的时候不用在前面加std::了

下一行 // main() 是程序执行入口 是一个单行注释。单行注释以 // 开头,在行末结束。还有一个多行注释/**/可以将内容加进两星号之间。

下一行 int main() 是主函数,程序从这里开始执行。

下一行 cout << “Hello World”; 会在屏幕上显示消息 “Hello World”。

下一行 return 0; 终止 main( )函数,并向调用进程返回值 0。这里返回值可以根据自己的意向进行定制,但要与函数声明的返回值类型保持一致。

2.数据类型


| 类型 | 整型 | 单浮点型 | 双浮点型 | 布尔型 | 字符型 | 空类型 | 字符串 |

| — | — | — | — | — | — | — | — |

| 关键字 | int | float | double | bool | char | void | string |

变量声明代码如下:

include

using namespace std;

int main(){

int a;

cin>>a;

cout<<a;

return 0;

}

在这里插入图片描述

变量重命名:可以使用typedef对已有的变量进行起别名

typedef type newname;

eg:

typedef int shuzi;

shuzi a;

a=10;

此时a为int型,数值为10编译语法上完全合法。

C++ 中的左值和右值

左值(lvalue):指向内存位置的表达式被称为左值表达式。

左值可以出现在赋值号的左边或右边。

右值(rvalue):术语右值指的是存储在内存中某些地址的数值。

右值是不能对其进行赋值的表达式,也就是说,

右值可以出现在赋值号的右边,但不能出现在赋值号的左边。

3.变量作用域


在函数或一个代码块内部声明的变量,称为局部变量。

当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。

局部变量都有局限性,只能在指定的区域使用,使用完毕后声明周期随着

局部变动而变动。

在函数参数的定义中声明的变量,称为形式参数。

只针对函数内部有效。

在所有函数外部声明的变量,称为全局变量。

全局变量的值在程序的整个生命周期内都是有效的。

全局变量可以被任何函数访问。也就是说,全局变

量一旦声明,在整个程序中都是可用的。

局部变量遵循就近原则

不同区域可以定义同名局部变量,如果某区域属于共有区域并且使用了同名局部变量

那么哪个变量离其最近,就会使用哪个变量。

4.运算符


| 运算符 | ----------------描述---------------- |

| — | — |

| + | 把两个操作数相加 |

| - | 从第一个操作数中减去第二个操作数 |

| * | 把两个操作数相乘 |

| / | 分子除以分母 |

| % | 取模运算 |

| ++ | 自增运算 |

| – | 自减运算 |

| && | 称为逻辑与运算符。如果两个操作数都 true,则条件为 true。 |

| || | 称为逻辑或运算符。如果两个操作数中有任意一个 true,则条件为 true。 |

| ! | 称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。 |

| == | 检查两个操作数的值是否相等,如果相等则条件为真。 |

| != | 检查两个操作数的值是否相等,如果不相等则条件为真 |

| > | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 |

| < | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 |

| >= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 |

| <= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 |

三、数组

======================================================================

1.声明


type arrayName [ arraySize ];

eg:

double balance[10];

2.初始化


直接初始化

固定数组大小

double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

随机数组大小【数组大小看值的个数】

double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};

固定数组赋相同初始值

balance[4] = 50.0;

3.获取数组元素


将数组内的元素通过索引直接赋值给同类型的变量

double salary = balance[9];

四、字符串

=======================================================================

1.声明一个字符串【c风格】


char site[7] = {‘R’, ‘U’, ‘N’, ‘O’, ‘O’, ‘B’, ‘\0’};

char site[] = “RUNOOB”;

2.处理字符串常用的函数


在这里插入图片描述

3.C++中的字符串类


头文件 string

string 字符串名 =“Hello World”;

可以直接使用+进行字符串拼接。有一系列成熟的字符串处理方法。

五、分支语句&循环语句

=============================================================================

1.分支语句


| 语句 | 描述 |

| — | — |

| if | 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 |

| if…else if…else … | 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。 |

| switch…case …dafault… | 一个 switch 语句允许测试一个变量等于多个值时的情况 |

| 条件? 结果1 : 结果2 | 三目运算符,前面条件满足执行结果1,否则执行结果2 |

2.循环语句


1.循环类型

| 循环类型 | 描述 |

| — | — |

| while(){} | 当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。 |

| for(初始化;终止条件;循环变量的变动){} | 多次执行一个语句序列,简化管理循环变量的代码。 |

| do{}while() | 除了它是在循环主体结尾测试条件外,其他与 while 语句类似,只不过比while多执行一次 |

2.控制条件

| 控制语句 | 描述 |

| — | — |

| break 语句 | 终止 loop 或 switch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。 |

| continue 语句 | 引起循环跳过主体的剩余部分,立即重新开始测试条件。 |

| goto 语句 | 将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。 |

六、函数

======================================================================

1.函数的组成部分


一个函数的轮廓

返回值类型 函数名( 参数列表 )

{

函数主体

}

解释

返回类型:一个函数可以返回一个值。有些函数执行所需的操作而不返回值,

在这种情况下,返回值类型是关键字 void。

函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。

参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值

被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,

也就是说,函数可能不包含参数。

函数主体:函数主体包含一组定义函数执行任务的语句。

2.函数声明、定义


函数声明

返回值类型 函数名 (参数列表或参数类型);

当只有一条语句的时候就是函数声明

函数定义

有函数主体的一个语句块就是函数定义,在使用函数前必须在前面有过定义或声明。

3.函数的嵌套、递归、重载、引用


①函数嵌套

当一个函数调用另一个函数的时候就成称为函数的嵌套。最典型的就是主函数调用其他函数。

#include

using namespace std;

int sum(int a, int b)

{

return a+b;

}

int main ()

{

// 局部变量声明

int a = 100;

int b = 200;

result = sum(a, b);

cout << “Total value is :” << result << endl;

return 0;

}

警告:各个函数都是占用的栈资源,是相互平行的,不可以进行函数的嵌套定义,只能进行函数的嵌套使用。

②函数递归【斐波那契数列】

函数的递归是一种特殊的函数嵌套,他调用的函数是自身。

#include

using namespace std;

int Fib(int n)

{

if(n == 1 || n == 2)

return 1;

else

return Fib(n-1) + Fib(n-2);

}

int main()

{

int n; //n表示为第几个数值

while(cin >> n)

{

int res = Fib(n);

cout << res <<endl;

}

return 0;

}

③函数重载

同函数名,不同参数类型或个数,返回值类型不作为评判标准。

#include

using namespace std;

string Sum(string a,string b){

return a+b;

}

int Sum (int a,int b){

return a+b;

}

④函数引用

函数引用指的是函数传参的时候传递参数的引用,相当于给原参数起别名。

void Swap (int a,int b){

int t=a;

a=b;

b=t;

}

void Swap (int& a,int& b){

int t=a;

a=b;

b=t;

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

r)

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-7bjS9UVr-1712886052706)]

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值