C++基础入门学习
一、下载安装
- visual studio 社区版(免费版), 跳转下载地址
二、开始撸代码
- 创建一个项目
- 创建一个文件
- 编写代码
#include<iostream>
using namespace std;
/*
* 多行注释,快捷键:(ctrl+K+C)
*/
//单行注释 快捷键:(ctrl+shi+\)
int main()
{
cout << "hello world" << endl; //相当于print,上下代码是一个框架,(endl:输出换行)
system("pause");
return 0;
}
三、基础知识
1. 变量
作用:给一个指定的内存空间起名,方便操作这段内存空间。
语法:数据类型 变量名 = 初始值;
#include<iostream>
using namespace std;
int main()
{
int a = 10;
cout << "a=" << a<< endl;
system("pause");
return 0;
}
2. 常量
作用:记录程序中不可变更的数据。
语法:
- #define 宏常量:常在文件上方定义,表示一个常量;
# define 常量名 常量值
- const修是的变量:常在变量定义前加关键字const,修饰改变量为常量,不可更改;
const 数据类型 变量名=常量名
3. 关键字
4. 标识符命名规则
- 不能是关键字;
- 只能由字母、数字、下划线组成;
- 第一个字符必须为字符或下划线;
- 字母区分大小
5. 数据类型
5.1字符型
1)用于显示单个字符变量,只占1个字节。在显示字符变量时,用单引号将字符括起来,不要用双引号;
2)单引号内只能有一个字符,不可以是字符串;
3)通过将对应的ASCII编码放入到存储单元中存储,a-97;A-65
char ch ='a';
cout << int(ch) << endl; //字符变量对应的ASCII编码
5.2 转义字符
\n | 换行 |
---|---|
\t | 水平制表(跳到下一个tab位置) |
\\ | 反斜线“\” |
5.3 字符串
#include<iostream>
using namespace std;
#include <string> //用C++风格字符串时,需要包含这个头文件
int main()
{
//c 风格字符串:char 字符串名 [] = “”
//用双引号包含字符串
char str1[] = "hello\n world";
cout << str1 << endl;
//c++ 风格字符串
string str2 = "hello\t world";
cout << str2 << endl;
string str3 = "hi\t world"; //"\t"输出结果8个字符空间后,对齐
cout << str3 << endl;
system("pause");
return 0;
}
5.4 浮点型
5.5 数据输入
关键字:cin (从键盘获取数据)
语法:cin >> 变量
float f = 1.111f; //单精度,默认double
cout << "请给浮点型f进行赋值:" << endl;
cin >> f;
cout << "f现在为:" << f << endl;
6. 运算符
6.1 前置递增(++a):先变量+1,再进行表达式的运算
6.2 后置递增(a++):先进行表达式运算,再变量+1
6.3 赋值运算符
1)加等于:a=0;a+=2;结果:a=2;
2)减等于:a=4;a-=2;结果:a=2;
3)除等于:a=4;a/=2;结果:a=2;
4)膜等于:a=5;a%2;结果:a=1;
6.4 比较运算符
== | 术语:相等于;如:4==3,结果:0 |
---|
6.5 逻辑运算符
! :非; &&:与;||:或
//前置递增:
int a1 = 1;
int b1 = ++a1 *10;
cout << "a1=" << a1 << endl; //a1=2
cout << "b1=" <<b1 << endl; //b1 =20
//后置递增:
int a2 = 1;
int b2 = a2++ *10;
cout << "a2=" << a2 << endl; //a2=2
cout << "b2=" << b2 << endl; //b2=10
int a = 10;
if(a > 0) //后面不能加“;”,若加不论if是否,if后的代码都会执行;
{
cout << "a大于0" << endl;
}
else
{
cout << "a不大于0" << endl;
}
7 程序流程结构
7.1 选择结构
1)if
2)三目运算符
语法:表达式1?表达式2:表达式3
解释:
若 表达式1为真,执行表达式2,并返回2的结果;
若 表达式1为假,执行表达式3,并返回3的结果;
注:在C++中三目运算符返回的是变量,可以继续赋值;
int a = 10;
int b = 20;
(a>b?a;b) =100; //a!>b,返回b的值,并将100赋值给b,a=10;b=100;
3)switch语句
if和switch的区别: switch只能判断整型或者字符型,不可以是一个区间;
switch()
{
case 结果1:执行语句;
break; //退出当前分支
case 结果2:执行语句;
break;
default:执行语句; //前面的条件都不存在,执行此处
break;
}
7.2循环结构
1)while
#include<iostream>
using namecpace std;
//time系统时间头文件添加
#incloude<ctime>
int main(){
//添加随机数种子,作用:利用当前系统时间生成随机数,防止每次随机数都一样
srand((unsigned int)time(NULL));
int a = rand()%100; //生成0-99的随机数
int num = 0;
while(num<10)
{
cout << num << endl;
num++;
}
system("pause");
return 0;
}
2)for(起始表达式;条件表达式;末尾循环体){循环语句}
for(int i = 0;i<10;i++){ }
#include<iostream>
using namespace std;
int main() {
for (int i = 1; i <= 100; i++)
{//如果是7的倍数,或个位有7,或十位有7
if (i%7==0 || i%10 ==7 ||i/7==0)
{
cout << "敲桌子!" << endl;
}
else
{
cout << i << endl;
}
}
system("pause");
return 0;
}
3)嵌套循环
#include<iostream>
using namespace std;
//乘法口诀表
int main() {
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++) {
cout << j << "*" << i << "=" << j * i ;
}
cout << endl;
}
system("pause");
return 0;
}
7.3 跳转语句
1)break
switch中,终止case并跳出switc;循环中,跳出当前循环语句;嵌套循环中,跳出最近的内层循环语句。
2)continue
3)goto:标记A
标记A:
8 函数
8.1 函数定义
作用:将常用的代码封装起来,以便代码复用;大项目分割成若干个模块,每个实现特定的功能。
语法:
返回值类型 函数名(参数列表)
{
函数体语句
return 表达式
}
#include<iostream>
using namespace std;
//如果函数不需要返回值,声明的时候写void 函数名(){}
//一个加法函数
int add(int num1, int num2)
{//num1和num2没有真实数据,形式上的参数,简称形参;当函数调用时,实参的值会传递给形参;
int sum = num1 + num2;
return sum;
}
int main()
{
int a = 10;
int b = 20;
int c = add(a, b); //调用函数,并赋值
cout << "sum=" << sum << endl;
//system("pause");
while (1)
{
}
return 0;
}
8.2函数的调用
语法:函数名(参数)
#include<iostream>
using namespace std;
//函数常见样式:
//1、无参无返
void test01()
{
cout << "test01" << endl;
}
//2、有参无返
void test02(int a)
{
cout << "test02,a=" << a << endl;
}
//3、无参有返
int test03()
{
cout << "test03" <<endl;
return 1000;
}
//4、有参有返
int test04(int a)
{
cout <<"test04,a=" << a << endl;
}
int main(){
//1、
test01();
//2、
test02(100);
//3、
int num3 = test03();
cout << "num3=" << num3 <<endl;
//4、
int num4 = test04(1000);
cout << "num4=" << num4 << endl;
system("pause");
return 0;
}
8.3 函数的声明
作用:提前告诉编译器函数的存在;函数的定义在main之后,必须有函数的声明;
声明可以多次,定义只有一次;
int max(int a,int b);//语法:返回值类型 函数名(形参列表)
int main(){
}
int max(int a, int b)
8.4 函数分文件编写
1)创建.h的头文件,在头文件中写函数的声明;
2)创建.cpp的源文件,在源文件中写函数的定义;
//1)头文件.h
#include<iostream>
using namespace std;
//头文件中,写函数声明
void sw(int a, int b);
//2)源文件.cpp
#include "sw.h" //源文件中添加头文件,作用:将”源文件和头文件相关联
// “”代表自己写的头文件
//源文件中,函数定义
void sw(int a, int b)
{
int ch = a;
a = b;
b = ch;
cout << "替换后,a=" << a << endl;
cout << "替换后,b=" << b << endl;
}
3)调用,仅需包含头文件即可
#include<iostream>
using namespace std;
#include "sw.h" //包含头文件
int main() {
int a = 10;
int b = 20;
sw(a, b);
system("pause");
return 0;
}
C++程序中包含两类文件:.cpp(C++源文件,源代码)+.h(C++头文件,也是源代码)
c++源文件和头文件作用详解
○ 在一个文件中定义函数,在其他文件中声明这个函数。头文件不用被编译。
○ 把所有函数声明全部放进头文件中,当一个.cpp源文件需要它们时,就可以通过一个宏命令#include 包含进.cpp文件中,从而内容合并到.cpp文件中。
○ dll分析与编写
§ dll主要三块内容:全部变量、函数接口、资源;
§ lib:导入库文件,分静态库和动态库;
四 通过Python调用c++
ctypes是Python的外部函数库。它提供C兼容的数据类型,并允许在DLL或共享库中调用函数。它可以用于将这些库包装在纯Python中
ctypes官方文档
- 指针 、 结构体、类和对象、 C++面向对象的三大特性为:分装、继承、多态
传智播客