栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

01-c++基础入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

01-c++基础入门

1.创建项目

解决方案资源管理器中创建源代码,否则不能运行
一个项目一个main
多main解决方案

2.基础结构
#include
using namespace std;

int main() {

	//变量的定义
	//语法:数据类型  变量名 = 初始值

	int a = 10;

	cout << "a = " << a << endl;
	
	system("pause");

	return 0;
}
2.1.变量、常量与关键字

变量同java
常量两种方式

#define DAY 7
const int a = 2;

关键字:系统预留词,不能用

2.2.命名规则:同java 3.数据类型

用于分配内存

3.0 sizeof 和数据输入

语法: sizeof( 数据类型 / 变量)

cout << "short 类型所占内存空间为: " << sizeof(short) << endl;

语法: cin >> 变量

int a = 0;
cout << "请输入整型变量:" << endl;
cin >> a;
cout << a << endl;
3.1 整型
数据类型占用空间取值范围
short(短整型)2字节(-2^15 ~ 2^15-1)
int(整型)4字节(-2^31 ~ 2^31-1)
long(长整形)Windows为4字节,Linux为4字节(32位),8字节(64位)(-2^31 ~ 2^31-1)
long long(长长整形)8字节(-2^63 ~ 2^63-1)
3.2 浮点型
数据类型占用空间有效数字范围
float4字节7位有效数字
double8字节15~16位有效数字
3.3 字符型

语法:char ch = 'a';

  • 占一个字节,java占2个
  • 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元
  • 有转义字符
3.4 字符串型

两种表示
char str1[] = "hello world";

注意:C++风格字符串,需要加入头文件==#include==
string str = "hello world";

3.5 布尔型

bool类型占1个字节大小
bool flag = true;

3.6 运算符

1.算术

运算符术语示例结果
+正号+33
-负号-3-3
+加10 + 515
-减10 - 55
*乘10 * 550
/除10 / 52
%取模(取余)10 % 31
++前置递增a=2; b=++a;a=3; b=3;
++后置递增a=2; b=a++;a=3; b=2;
–前置递减a=2; b=–a;a=1; b=1;
–后置递减a=2; b=a–;a=1; b=2;

2.比较

运算符术语示例结果
==相等于4 == 30
!=不等于4 != 31
<小于4 < 30
>大于4 > 31
<=小于等于4 <= 30
>=大于等于4 >= 11
3.逻辑
4.赋值
与java一样
4.程序结构 4.1 选择 if 三目 Switch
switch(表达式)

{

	case 结果1:执行语句;break;

	case 结果2:执行语句;break;

	...

	default:执行语句;break;

}
4.2 循环

while循环语句
do…while循环语句
for循环语句

4.3跳转 break

用于跳出选择结构或者循环结构

break使用的时机:

  • 出现在switch条件语句中,作用是终止case并跳出switch
continue

跳过本次循环中余下尚未执行的语句

goto
int main() {

	cout << "1" << endl;

	goto FLAG;

	cout << "2" << endl;
	cout << "3" << endl;
	cout << "4" << endl;

	FLAG:

	cout << "5" << endl;
	
	system("pause");

	return 0;
}
5.数组

长度通过sizeof()结合除法计算

5.1 一维数组 5.1.1 定义方法

int score[10];
//如果{}内不足10个数据,剩余数据用0补全
int score2[10] = { 100, 90,80,70,60,50,40,30,20,10 };
int score3[] = { 100,90,80,70,60,50,40,30,20,10 };

5.1.2 数组名

数组名是常量,因此不可以赋值
用途:

  1. 可以统计整个数组在内存中的长度 sizeof(arr)
  2. 可以获取数组在内存中的首地址 (int)arr
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
cout <<"数组内存空间" << sizeof(arr) << endl;
cout << "数组首地址" << (int)arr << endl;
cout << "数组首元素地址地址" << (int)&arr[0] << endl;

5.2 二维数组
int arr[2][3];

int arr2[2][3] =
{
	{1,2,3},
	{4,5,6}
};
int arr3[2][3] = { 1,2,3,4,5,6 };
int arr4[][3] = { 1,2,3,4,5,6 };

总结:在定义二维数组时,如果初始化了数据,可以省略行数

cout << "二维数组大小: " << sizeof(arr2) << endl;
cout << "二维数组首地址:" << arr2 << endl;
cout << "二维数组第一行地址:" << arr2[0] << endl;
cout << "二维数组第一个元素地址:" << &arr2[0][0] << endl;

二维数组首地址:0055FA40
二维数组第一行地址:0055FA40
二维数组第一个元素地址:0055FA40

6.函数 6.1 函数定义

与java没啥区别,少了可访问修饰符
函数的定义一般主要有5个步骤:

1、返回值类型

2、函数名

3、参数表列

4、函数体语句

5、return 表达式

参数是值传递
无返回值 void

6.2 函数分文件书写
  1. 创建后缀名为.h的头文件
  2. 创建后缀名为.cpp的同名源文件
  3. 在头文件中写函数的声明
  4. 在源文件中写函数的定义,并声明头文件#include "swap.h"
  5. 使用的地方也要声明头文件
    示例:
//swap.h文件
#include
using namespace std;

//实现两个数字交换的函数声明
void swap(int a, int b);

//swap.cpp文件
#include "swap.h"

void swap(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
}
//main函数文件
#include "swap.h"
int main() {

	int a = 100;
	int b = 200;
	swap(a, b);

	system("pause");

	return 0;
}

7.指针 7.1 基本概念
  • 普通变量存放的是数据,指针变量存放的是地址

指针的作用:

  • 可以通过指针间接访问内存
  • 可以利用指针变量保存地址

内存编号是从0开始记录的,一般用十六进制数字表示

指针定义 指向的类型 * 变量名
对变量取地址 &
取指针存储地址的变量 *

//指针定义语法: 数据类型 * 变量名 ;
int * p;
p = &a; //指针指向变量a的地址
//通过*操作指针变量指向的内存
cout << "*p = " << *p << endl;

7.2 指针所占内存空间

windows: 4个字节

linux32位操作系统下是4个字节

7.3 空指针和野指针

空指针:指针变量指向内存中编号为0的空间,即指向null

用途:初始化指针变量

注意:访问会报错,内存编号0 ~255为系统占用内存,不允许用户访问

野指针:指针变量指向非法的内存空间

7.4 const 与指针

const修饰指针有三种情况

  1. const修饰常量 — 常量指针 const int * p1 可改指向,不能通过p改*p值
  2. const修饰指针 — 指针常量 int * const p2 = &a; 不能改指向,可以通过p改*p值
  3. const即修饰指针,又修饰常量
const int* p1 = &a;
p1 = &b;

int* const p2 = &a;
*p2 = 20;
7.5 指针与数组

总结:当数组名传入到函数作为参数时,被退化为指向首元素的指针

#include
#include
using namespace std;
int main() {
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int* p = arr;  //指向数组的指针
	for (int i = 0; i < 10; i++)
	{
		//利用指针遍历数组
		cout << *p << endl;
		p++;
	}


	system("pause");
	return 0;
}
指针与函数

指针传递能修改实参的值
1.传地址

swap2(&a, &b); //地址传递会改变实参

2.交换值

void swap(int* a, int* b) {
	int temp = *a;
	*a = *b;
	*b = temp;
}
8.结构体

结构体属于用户自定义的数据类型

8.1 定义与使用

通过结构体创建变量的方式有三种:
1.声明

  • struct 结构体名 变量名
    2.赋值
  • struct 结构体名 变量名 = { 成员1值 , 成员2值…}
  • 定义结构体时顺便创建变量
    3.访问
    操作符 ‘’.‘’

//结构体定义

struct student
{
	//成员列表
	string name;  //姓名
	int age;      //年龄
	int score;    //分数
}stu3; //结构体变量创建方式3 



int main() {

	//结构体变量创建方式1
	struct student stu1; //struct 关键字可以省略

	stu1.name = "张三";
	stu1.age = 18;
	stu1.score = 100;

	//结构体变量创建方式2
	struct student stu2 = { "李四",19,60 };
//3
	stu3.name = "王五";
	stu3.age = 18;
	stu3.score = 80;
	

	cout << "姓名:" << stu3.name << " 年龄:" << stu3.age  << " 分数:" << stu3.score << endl;

	system("pause");

	return 0;
}
8.2 结构体数组
	struct student arr[3]=
	{
		{"张三",18,80 },
		{"李四",19,60 },
		{"王五",20,70 }
	};
8.3 结构体指针
  • 利用操作符 -> 可以通过结构体指针访问结构体属性
struct student stu2 = { "李四",19 };

struct student* p = &stu2;
p->score = 80;
8.4 结构体嵌套
struct teacher
{
    //成员列表
	int id; //职工编号
	string name;  //教师姓名
	int age;   //教师年龄
	struct student stu; //子结构体 学生
};

	t1.stu.name = "张三";
	t1.stu.age = 18;
	t1.stu.score = 100;
8.5 结构体做参数
//值传递
void printStudent(student stu )
{
	stu.age = 28;
	cout << "子函数中 姓名:" << stu.name << " 年龄: " << stu.age  << " 分数:" << stu.score << endl;
}

//地址传递
void printStudent2(student *stu)
{
	stu->age = 28;
	cout << "子函数中 姓名:" << stu->name << " 年龄: " << stu->age  << " 分数:" << stu->score << endl;
}
结构体与const
const student *stu
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/967214.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号