c++基础学习

2023-11-04

  • 创建c++程序
  • #include<iostream>
    using namespace std;
    
    int main()
    {
    
    	cout << "Come up and c++ me some time.";
    		cout << endl;
    		cout << "You won't regreat it!" << endl;
    
    
    
    	return 0;
    }

  • 注释,有前缀//标识

  • 预处理编译指令#include

  • 函数头:int main()

  • 编译指令 using namespace .

  • 函数体,{}括起

  • c++ 中的cout 工具用来显示消息语句

  • main()中的return语句结束main()执行


1.2 c++注释

有两种表示

#include<iostream>
using namespace std;

int main()
{
//这是单行注释
/*
这是多行注释
*/


return 0;
}

#include <iostream>

该编译指令导致处理器将iostream文件的内容添加到程序中,实际上iostream文件的内容将取代程序中的代码行#include<iostream>.源文件没有被修改,只是将源代码文件和iostream组合成一个复合文件,编译的下一级段将使用该文件。

注意:使用cin和cout进行输入和输出的程序必须包含文件iostream

c++语句

  • 声明语句和变量
  • #include<iostream>
    using namespace std;
    
    int main()
    {
    int a;//声明一个int整型变量a
    a=20;//将20赋值给a
    cout<<"我已经"<<a<<"岁了"<<endl;//cout将输出“我已经20岁了”
    
    return 0;//结束main()
    }
    

cin与cout一样都是智能对象,cin使用>>运算符从输入流中抽取字符。


函数

#include<iostream>
using namespace std;
void fun(int);//fun()函数声明
int main()
{
fun(4);//调用这个函数
int num;
cin>>num;//输入整型数字fun(num)才可以正常运行
fun(num);


return 0;
}
void fun(int n)//fun()函数定义
{
cout<<"我有"<<n<<"好朋友"<<endl;

}

变量

变量名

  • 在名称中只能使用字母字符、数字、下划线(-)。
  • 名称的第一个字母不能是数字。
  • 区分大写和小写字符
  • 不能将c++关键字作为名称

基本数据类型

类型 占用字节数
void 0
bool 1
wchar_t 2或4
char 1
short 2
int  4
long 4
long long 8
float 4
double 8
unsigned chat 1
unsigned short 2
unsigned int  4
unsigned long 4
unsigned long long  8

c++运算符

类别 运算符 结合性
后缀 ()[] -> . ++ -- 从左到右
一元 + - !~ ++ -- sizeof 从右到左
乘除 * / % 从左到右
加减 +  - 从左到右
关系 < >= > >= 从左到右
相等 == != 从左到右
逻辑and && 从左到右
逻辑or || 从左到右
条件 ?: 从右到左
赋值 = += -= /= %=  从右到左
逗号 , 从左到右

数组

  • 数组声明
  1. 存储在每个元素中的值的类型
  2. 数组名
  3. 数组中的元素数
#include <iostream>
using namespace std;

int main()
{
int arr[3];//数组声明
arr[0]=1;//数组赋值1,2,3
arr[1]=2;
arr[2]=3;
int arr1[3]={1,2,3};

int arr2[]={1,2,3,4,5,6};//三种方式数组的赋值

cout<<arr[0]<<endl;//读取数组中的元素
cout<<arr1[2]<<endl;
cout<<arr2[1]<<endl;
return 0;

}


string类

#include <iostream>
#include <string>//要是用string类必须包含头文件string
using namespace std;

int main()
{
 char char1[];//创建一个空数组
 char char2[10]="object";// 创建已经初始化的数组
 string str1;//创建一个空的string对象
 string str2="objectt";//创建一个有初始化值的string 对象
 
 cin>>str1;//向str中输入字符
 string str3;
 str3=str1+str2;//将str1和str2拼接
 cout<<str3<<endl;


return 0;
}

结构体

  • 储存多种类型的数据
  • 关键字struct表明
#include<iostream>
using namespace std;
#include<string>
struct student
{
	string name;
	int age;
	float height;
};
int main()
{
	//第一种赋值
	student one;
	one.name = "小明";
	one.age = 12;
	one.height = 120.5;
	//第二种赋值
	student two;
	two = { "小刚",13,130.5 };

	cout << "姓名 " << one.name << " 年龄 " << one.age << " 身高 " << one.height << endl;
	cout << "姓名 " << two.name << " 年龄 " << two.age << " 身高 " << two.height << endl;

	//创建结构体数组
	student arr[3] =
	{
		{"张三",23,176.5},
		{"李四",24,167.4},
		{"王二",34,178.8}
	};
	//读取结构体数组中的数据
	cout << "姓名 " << arr[0].name << " 年龄 " << arr[0].age << " 身高 " << arr[0].height << endl;
	cout << "姓名 " << arr[1].name << " 年龄 " << arr[1].age << " 身高 " << arr[1].height << endl;
	cout << "姓名 " << arr[2].name << " 年龄 " << arr[2].age << " 身高 " << arr[2].height << endl;


	return 0;

}
/*
姓名 小明 年龄 12 身高 120.5
姓名 小刚 年龄 13 身高 130.5
姓名 张三 年龄 23 身高 176.5
姓名 李四 年龄 24 身高 167.4
姓名 王二 年龄 34 身高 178.8

F:\新建文件夹\myfirst\Debug\myfirst.exe (进程 10044)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .



*/


共用体:是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。

相比结构体可以同时存储int long 和double,共用体只能存储int long 或double。

#include<iostream>
using namespace std;
union one
{
	int int_val;
	long long_val;
	double double_val;
};
int main()
{
	one A;
	A.int_val = 18;
	cout << A.int_val << endl;
	A.long_val = 1.24;
	cout << A.long_val << endl;
	

	return 0;

}


枚举:c++中的enum工具提供了另一种创建符号常量的方式,这种方式可以代替const.

列如:enum spectrum {red,orange,yellow,green,blue,violet,indigo,ultraviolet}

spectrum被称为枚举,red----ultraviolet作为符号常量,它们对应的整数值0~7,这些常量被称为枚举量。

#include<iostream>
using namespace std;

int main()
{
	enum spectrum{red,orange,yellow,green,blue,violet};
	cout << red << endl;
	spectrum band;//可以用枚举名来声明这种类型的变量
	band = red;
//	band = 100;不被允许
//++red;不被允许
	int coloe = 3 + green;
	cout << "coloe " <<" = " << coloe << endl;
	return 0;

}
/*
0
coloe  = 6

F:\新建文件夹\myfirst\Debug\myfirst.exe (进程 21320)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

*/

指针

  • 指针是一个变量
  • 其存储的是值的地址
  • &为地址运算符

例如

int a =100;

int *p=&a;

注意不可以 int*a,b。这只表明创建一个int指针a和int型变量b。

#include<iostream>
using namespace std;

int main()
{
	int a = 100;
	int* p = &a;
	*p = 10000;
	cout << "p指向的地址" << p << endl;
	cout << "a 的地址" << &a << endl;
	cout << "*p的值是多少" << *p << endl;
	cout << "a的值是多少" << a << endl;
	//由于p指向a;*p与a完全等价。



	return 0;
}
/*
p指向的地址00EFF750
a 的地址00EFF750
*p的值是多少10000
a的值是多少10000

F:\新建文件夹\myfirst\Debug\myfirst.exe (进程 19944)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
*/

 2

使用new开辟内存

egg:

int *p=new int ;//new运算符根据类型来确定需要多少字节的内存。

typeName * pointer_name=new typeName;数据对象可以是结构和基本类型。

#include<iostream>
using namespace std;

int main()
{
	int good = 100;
	int* p = new int;
	*p = 100;
	cout << "good 的地址" << &good << endl;
	cout << "p指向的地址" << p << endl;//虽然值都是100但存储位置不同
	
	double* p1 = new double;
	long* p2 = new long;
	cout << "p指针占用的字节大小" << sizeof(p) << endl;
	cout << "p1指针占用的字节大小" << sizeof(p1) << endl;
	cout << "p2指针占用的字节大小" << sizeof(p2) << endl;

	return 0;
}
/*
good 的地址0116FD68
p指向的地址01489410
p指针占用的字节大小4
p1指针占用的字节大小4
p2指针占用的字节大小4

F:\新建文件夹\myfirst\Debug\myfirst.exe (进程 26680)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
*/

使用delete释放内存

egg:

int *p=new int ;

delete p;

delete p;//不允许

int *p=nullptr;

delete p;//不允许,一般new delete,new[]   和delete[]配对出现。

3指针与数组

#include<iostream>
using namespace std;

int main()
{
	int arr[] = { 12,13,14,15 };
	int* p = nullptr;//p初始化空
	p = arr;//指针指向arr的首地址
	cout << "*p=" << *p << endl;
	cout << "*(++p)=" << *(++p) << endl;//++p将指针指向arr中下一位元素。


	return 0;
}
/*
*p=12
*(++p)=13

F:\新建文件夹\myfirst\Debug\myfirst.exe (进程 14820)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
*/

for循环

  • 设置初始值
  • 执行测试,看循环是否应当继续
  • 执行循环操作
  • 更新用于循环的值
#include<iostream>
using namespace std;

int main()
{
	for (int i = 0; i < 5; i++)//先执行int i=0并且只执行一次,其次cout <<"i="<<i<<endl;然后i++,再之i<5.
	{
		cout << "i="<<i << endl;
	}
int x;
cin >>x;
for(int i=0;i<5;i=i+x)//修改步长i=i+x
{
cout<<"i="<<i<<endl;
}

	return 0;
}
/*
i=0
i=1
i=2
i=3
i=4

F:\新建文件夹\myfirst\Debug\myfirst.exe (进程 5872)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
*/

 递增运算符(++)递减运算符(--)

  • 分为前缀和后缀
#include<iostream>
using namespace std;

int main()
{
	int a = 1;
	int b = 2;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	a++;
	++b;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	int c = 0;
	c = ++a;
	cout << "c = " << c << endl;

	c = b++;
	cout << "c = " << c << endl;//前缀与后缀的区别只在与计算表达式的时间,前缀先进行递增再赋值,后缀先进行赋值在递增。
	return 0;
}
/*
 a = 1
b = 2
a = 2
b = 3
c = 3
c = 3

F:\新建文件夹\myfirst\Debug\myfirst.exe (进程 28088)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
*/

 组合运算符

操作符 作用(L为左操作数,R为右操作数)
+= 将L+R赋给L
-= 将L-R赋给L
*= 将L*R赋给L
/= 将L/R赋给L
%= 将L%R赋给L
#include<iostream>
using namespace std;

int main()
{
	int a = 10;
	int b = 20;
	int c = 0;
	c += a + b;//先执行a+b再执行+=操作。其他组合运算符雷同。
	cout << "c = " << c << endl;
	return 0;
}
/*
c=30;
*/

while循环

#include<iostream>
using namespace std;

int main()
{

	char name[] = "object";
	int i = 0;
	while (name[i] != '\0')
	{
		cout << name[i] << endl;
		i++;
	}
	return 0;
}
/*
o
b
j
e
c
t

*/

do while 循环

#include<iostream>
using namespace std;

int main()
{

	char name[] = "object";
	int i = 0;
	
	do
	{
		cout << name[i] << endl;
		i++;
	} while (name[i] != '\0');

	return 0;
}
/*
o
b
j
e
c
t

*/

if else 语句

#include<iostream>
using namespace std;

int main()
{
	char name[] = "object";
	int i = 0;
	if (name[i] != '\0')
	{
		for (int i = 0; i < sizeof(name) / sizeof(name[0]); i++)
		{
			cout << name[i] << endl;
			
		}
	
	}
	else
	{
		cout << "结束了" << endl;
	}
	return 0;
}
/*
o
b
j
e
c
t

*/

if else if else结构 

#include<iostream>
using namespace std;

int main()
{
	int a = 100;
	int b = 100;
	int c = 0;
	if (a > b)
	{
		cout << "a大于b" << endl;
	} else if(a<b)
	{
		cout << "a小于b" << endl;
	}
	else
	{
		cout << "a等于b" << endl;
	}
	return 0;
}
/*

a等于b

*/

 逻辑表达式

运算符 运算符左 运算符右 结果
|| true false true
&& true false false
true false

? : 运算符 

#include<iostream>
using namespace std;

int main()
{
	int a = 100;
	int b = 100;
	
	int c = a > b ? a : b;//如果a>b则将a赋值给c,否则将b赋值给c;
	cout << "c= " << c << endl;
	return 0;
}
/*

c= 100

*/

 switch 语句

#include<iostream>
using namespace std;

int main()
{
	cout << "请输入你的选着" << endl;
	int choice;
	cin >> choice;
	switch (choice)
	{
	case 1:
		cout << "你选的是1" << endl;
		break;
	case 2:
		cout << "你选的是2" << endl;
		break;
	default:
		cout << "你选的是其他数字" << endl;
	}
	return 0;
}
/*

请输入你的选着
1
你选的是1

F:\新建文件夹\myfirst\Debug\myfirst.exe (进程 30276)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口.

*/

c++函数

  • 提供函数定义
  • 提供函数原型
  • 调用函数 
#include<iostream>
using namespace std;
void fun();
int main()
{
	fun();
	return 0;
}
void fun()
{
	cout << "你调用了fun()函数" << endl;
}
//你调用了fun()函数

 函数可以分两类有返回值和无返回值

//egg: 

1,void fun(){};

2.typeName functionName(parameterLIst)

{
statements;

return value;

}

#include<iostream>
using namespace std;
void fun();
int fun1(int a, int b);
int main()
{
	fun();
	int c = fun1(12, 1);
	cout << c << endl;
	return 0;
}
void fun()
{
	cout << "你调用了fun()函数" << endl;
}
int fun1(int a,int b)
{
	if (a > b)
	{
		return b;
	}
}

/*你调用了fun()函数
1
*/

 函数参数和按值传递

int fun(int a,int b,int c);含有多个参数的函数

int a=10;

int fun(int x){....};

int b=fun1(a);//按值传递

#include<iostream>
using namespace std;
int fun(int x);
int main()
{
	int a = 10;
	int c = fun(a);
	cout << "c=" << c << endl;
	
	return 0;
}
int fun(int x)
{
	return x;
}

/*
 c=10
*/

 函数和数组

#include<iostream>
using namespace std;
int sum(int arr[], int n);
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9 };
	int number=sum(arr, 9);
	cout << "number= " << number << endl;
	return 0;
}

int sum(int arr[], int n)
{
	int total = 0;
	for (int i = 0; i < n; i++)
	{
		total = total + arr[i];
		return total;
	}
}

/*
 number= 1
*/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++基础学习 的相关文章

随机推荐

  • 机器学习之逻辑回归模型

    1 逻辑回归模型介绍 逻辑回归 Logistic Regression LR 又称为逻辑回归分析 是一种机器学习算法 属于分类和预测算法中的一种 主要用于解决二分类问题 逻辑回归通过历史数据的表现对未来结果发生的概率进行预测 例如 我们可以
  • openglStudySite

    http www learnopengles com android lesson one getting started
  • Python正则表达式_常用匹配方法findall

    正则匹配方法之findall 核心要点 findall 是将所有匹配到的字符 以列表的形式返回 如果未匹配 则返回空列表 一 pattern findall 方法 语法 findall string None pos 0 endpos 92
  • qt undefined reference to的原因之一

    在h文件定义的函数 参数带const 而在cpp文件中实现函数时 参数没有带const 则编译时所有调用该函数的地方会报undefined reference to错误 两者修改一致就好了 如 h文件定义的函数 void Test cons
  • 有意思的C编程题目

    有意思的C编程题目 有意思的编程 1 翻扑克 有52张朴克牌 使它们全部正面朝上 从第2张牌开始 把凡是2的倍数位置上的牌翻成正面朝下 接着从第3张牌开始 把凡是3的倍数位置上的牌正面朝上的翻成正面朝下 正面朝下的翻成正面朝上 接着从第4张
  • 工具链接记录

    工具链接记录 内网穿透 https gofrp org docs examples https2http
  • C/C++声明类型typedef

    typedef为现有类型定义易于记忆的类型名 即同义字 别名 它与传统C语言中 define很相似 下面我们就从实例中体会它的用处 1 常规变量类型定义 例如无符号整型标识符太长 为了自己后续方便 我希望起个自己认识又短小精简的名字 如下
  • Extremal Region(极值区域)文本定位与识别法-学习笔记(一)

    最近做一个计算机视觉的项目 要将其中复杂场景中的文本识别率从92 进一步提升 挑战很大也很有意思 边阅读一些最新的文本定位与识别的论文 边在这里记下阅读笔记与翻译内容 慢慢研究 本人英语与专业水平有限 仅供学习参考 欢迎交流 请多指教 Re
  • 网络基础:子网掩码划分2

    例子 例1 192 168 1 88 26传统方法 192 168 1 88 26 192 168 1 88 255 255 255 192 注意 26 255 255 255 11000000 255 255 255 192 传统方法 1
  • python:打包package

    简介 把模块打包成package 可以进行分发和安装 packaged的打包和安装 一 package层次架构 二 package的打包和安装 1 创建setup py 2 打包package 3 安装package 一 package层次
  • 设计模式--命令模式

    命令模式 属于行为型模式基本原理 请求以命令的形式包裹在对象中 并传给调用对象 调用对象寻找可以处理该命令的合适的对象 并把该命令传给相应的对象 该对象执行命令 主要流程 1 创建命令对象 该对象中包含请求 和执行请求 2 创建请求类 其中
  • 我问chatGPT,在JavaScript中构造函数和类的区别

    问 构造器函数和面向中的类是同样的东西吗 答 构造器函数和面向对象中的类并不是同样的东西 它们之间有些许不同 在面向对象编程中 类是一种抽象的概念 它描述了一类具有相同属性和行为的对象 类可以看作是对象的蓝图 包含了对象的属性和方法 而对象
  • 如何进行弱网测试?专项测试中最实用的方法了解一下……

    目录 引言 一 什么是弱网测试 二 为何要进行弱网测试 三 如何做弱网测试 四 弱网测试工具 引言 如今这个高度互联的时代里 网络环境对于应用程序的影响越来越重要 而弱网测试就是用来检验应用程序在恶劣网络环境下的表现 如果你是一名开发人员或
  • 【linux shell】服务器系统自动化巡检脚本资源状况统计

    运维服务器系统的时候需要定期检查服务器系统资源状况 如CPU 内存 硬盘这些资源消耗信息统计 在这种情况下也可以用开源的监控系统导出相应的需求信息或者直观的通过监控平台去查看资源状况 本文将介绍另一种方式通过Linux shell脚本实现服
  • 0xA00F4244<NoCamerasAttached>相机打不开解决办法

    0xA00F4244 NoCamerasAttached 依次排查 ctrl s 搜索 设备管理器 打开找到 照相机 如图1 如果为灰色 说明设置里头相机权限没有打开 可以去设置打开如图2 也可以fn f10 打开之后 返回 设备管理器 窗
  • 基于fasttext的新客服文本分类

    基于fasttext的新客服文本分类效果评估 具体步骤如下 数据处理 模型搭建 效果评估 结论 第一部分数据处理包括 数据读取 数据标准化格式处理 训练集和验证集数据准备 数据读取 import pandas as pd df pd rea
  • City Horizon

    http acm hust edu cn 8080 judge contest viewProblem action pid 45728 Description Farmer John has taken his cows on a tri
  • C语言文件读写命令

    C语言把磁盘文件看成是字符 或字节 的序列 按照存储信息的形式来说 文件主要是有文本文件和二进制文件 文本文件由一个个字符组成 每个字节存放一个ASCII码制 代表一个字符 二进制文件把内存中的数据按其在内存中的存储形式原样放入磁盘空间 二
  • Linux编程基础之文本文件末尾自动加换行

    目录 前言 hello txt 文件内容 证明 总结 前言 操作系统 Fedora 文本文件末尾会自动加换行 利用 off t oldpos lseek fd 0 SEEK END 指针定位会到最后一个字符 都是换行符 后面一位 相当于什么
  • c++基础学习

    创建c 程序 include