2024年Java最全六千字C++阶段总结第一部分,收藏夹预定,适合C C+,赶紧学起来

最后

笔者已经把面试题和答案整理成了面试专题文档

image

image

image

image

image

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

7.2指针所占内存空间

7.3空指针和野指针

7.4const修饰指针

7.5指针和数组

7.6指针和函数

7.7指针,配合数组和函数

8,结构体

8.1结构体的定义和使用

8.2结构体数组

8.3结构体指针

8.4结构体嵌套结构体

8.5结构体做函数参数

8.6结构体中const使用场景


1,C++初始

1.1变量

作用:给一段指定的内存空间起名,方便操作这段内存。

语法:数据类型  变量名=初始值

int a=10;

1.2常量

作用:用于记录程序中不可更改的数据

两种方式

  • #define 宏定义:#define 常量名 常量值(通常在文件上方定义,表示一个常量)
  • const修饰的变量:const 数据类型 常量名=常量值(通常在变量定义前加上关键字const,修饰该变量为常量,不可更改)

#define a 10

const int b=10;

1.3关键字

作用:关键字是C++中预先保留的单词(标识符)

在定义变量或者常量的时候,不要用关键字,否则会产生歧义

int   char   long   if   case   const   define

1.4标识符命名规则

作用:C++规定给标识符(常量,变量)命名时,遵循一定的规则

  • 标识符不能是关键字
  • 标识符只能由字母,数字,下划线组成
  • 第一个字母必须是字母或下滑线
  • 标识符中字母区分大小写

int int=10;(错误)

int a=10;  int a1=10;  int a1_=10;(正确)      int a*=10(错误)

int b1=10; int _1=10;  (正确)       int 1_=10(错误)

int c=10不代表此时C=10

2,数据类型

在创建一个变量或者常量时,必须要指出相应的数据类型,否则无法给变量分配内存(数据类型就是为了分配合适的空间)

2.1整型

作用:整型变量表示的是整数类型的数据

C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同

short(短整型)2字节-215——215-1
int(整型)4字节-231——231-1
long(长整型)windows为4,linux下32位4,64位8-231——231-1
long long(长长整型)8字节-263——263-1

(1字节 = 二进制8位 / 十进制3位 / 十六进制2位)

2.2sizeof关键字

作用:利用sizeof关键字可以统计数据类型所占内存大小

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

int a=10;

可以得出:sizeof(int)=4,sizeof(a)=4

2.3实型(浮点型)

作用:用于表示小数

浮点型变量分为两种

  • 单精度float
  • 双精度double
float4字节7位有效数字
double8字节15-16位有效数字

有效数字是指在一个数中,从该数的第一个非零数字起,直到末尾数字称为有效数字,如0.123的有效数字是123。

float a=3.14f;(float类型定义的数据最好后面加上f,这样和double形成区别)

科学计数法

float a=1e2;  //1*10^2

float b=1e-2;  //1*0.1^2

2.4字符型

作用:字符型变量用于显示单个字符

语法:char ch=‘a’;(用单引号,单引号内只能有一个字符,不能是字符串)

  • C和C++中字符型变量只占1个字节
  • 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCLL编码放到储存单元

主要就记住A=65,a=97

2.5转义字符

作用:用于表示一些不能显示出来的ASCLL字符

现阶段我们常用的转义字符有:\n(技术太差,我就用这一个);\(想要输出’',就需要用\;cout<<“\”);\t正常8位

2.6字符串类型

作用:用于表示一串字符

两种风格:

C风格字符串:char 变量名[]=“字符串值”

C++风格字符串:string 变量名=“字符串值”(需要加上#include头文件)

char a[]=“abcdef”;

string b=“abcdef”;

2.7布尔类型

作用:布尔数据类型代表真或假的值

bool类型只有两个值(只要是非0的值都代表真)

  • true——真(本质是1)
  • false——假(本质是0)

bool类型只占1个字节大小

注意:使用bool类型的时候,初始化时一定要赋初值,不然输出结果为204。因为程序在Debug模式下,未对变量初始化,写入内存的是0xcc ,所以最后显示的结果为204。如果已经赋初值,则结果才是1或者0。

3,运算符

作用:用于执行代码的运算

算数运算符用于处理四则运算
赋值运算符用于将表达式的值赋给变量
比较运算符用于表达式的比较,并返回一个真值或假值
逻辑运算符用于根据表达式的值返回真值或假值
3.1算术运算符

作用:用于处理四则运算(除了正常的正负加减乘,下面介绍一些常用的)

  • “ / ”   除(两个数相除,取整数部分,且除数不为零)

int  a=10,b=5,c=3;  可以得出a/b=2,a/c=3;

  • “ % ”   取模(两个数相除,取余数部分)

int  a=10,b=5,c=3;  可以得出a%b=0,a%c=1;

  • “ ++ ”   前置递增(先自增,后运算)

int a=10,b;  b=++a;   则b=11,a=11;

  • “ ++ ”   后置递增(先运算,后自增)

int a=10,b;  b=a++;   则b=10,a=11;

  • “ – ”   前置递减(先自增,后运算)

int a=10,b;  b=–a*2;   则b=18,a=9;

  • “ – ”   后置递减(先运算,后自增)

int a=10,b;  b=a–*2;   则b=20,a=9;

3.2赋值运算符

作用:用于将表达式的值赋给变量

运算符术语示例结果
=赋值a=ba=b
+=加等于a+=ba=a+b
-=减等于a-=ba=a-b
*=乘等于a*=ba=a*b
/=除等于a/=ba=a/b
%=模等于a%=ba=a%b
3.3比较运算符

作用:用于表达式的比较,并返回一个真值或假值

int a=1,b=2;
运算符术语示例结果
==相等于a==b0
!=不等于a!=b1
<小于a<b1
>大于a>b0
<=小于等于a<=b1
>=大于等于a>=b0
3.4逻辑运算符

作用;用于根据表达式的值返回真值(1)或假值(0)

运算符术语示例结果
!!a如果a为假,则!a为真,如果a为真,则!a为假
&&a&&b如果a和b都为真,则结果为真,否则为假

4,程序流程结构

最基本的三种结构:顺序结构,选择结构,循环结构

  • 顺序结构:程序按顺序执行,不发生跳转
  • 选择结构:依据条件是否满足,有选择的执行相应功能
  • 循环结构:依据条件是否满足,循环多次执行某段代码

4.1选择结构

4.1.1if语句

作用:执行满足条件的语句

if语句的三种形式

  • 单行格式if语句(满足条件则执行语句,不满足则结束):(一条语句)

#include<iostream>
using namespace std;
int main()
{
	int a;
	cout << "输入a的值:";
	cin >> a;
	if (a > 5)
	{
		cout << "a大于5"<<endl;
	}
	system("pause");
	return 0;
}
  • 多行格式if语句( if(条件) {条件满足执行的语句} else{条件不满足执行的语句}):(两条语句)

#include<iostream>
using namespace std;
int main()
{
	int a;
	cout << "输入a的值:";
	cin >> a;
	if (a > 5)
	{
		cout << "a大于5"<<endl;
	}
	else
	{
		cout << "a小于等于5"<<endl;
	}
	system("pause");
	return 0;
}
  • 多条件if语句( if(条件1) {条件1满足执行的语句} else if(条件2) {条件2满足执行的语句}…else {都不满足执行语句):(n条语句)

#include<iostream>
using namespace std;
int main()
{
	int a;
	cout << "输入a的值:";
	cin >> a;
	if (a > 15)
	{
		cout << "a大于15"<<endl;
	}
	else if (a>10)
	{
		cout << "a大于10,小于等于15"<<endl;
	}
	else if (a>5)
	{
		cout << "a大于5,小于等于10" << endl;
	}
	else
	{
		cout << "a小于等于5" << endl;
	}
	system("pause");
	return 0;
}

嵌套if语句:在if语句中,可以嵌套使用if语句,达到更精确的条件判断

#include<iostream>
using namespace std;
int main()
{
	int a;
	cout << "输入a的值:";
	cin >> a;
	if (a > 15)
	{
		cout << "a大于15"<<endl;
	}
	else if (a>10)
	{
		if (a > 13)
		{
			cout << "a大于13,小于等于15" << endl;
		}
		else
		{
			cout << "a大于10,小于等于13" << endl;
		}
	}
	else if (a>5)
	{
		cout << "a大于5,小于等于10" << endl;
	}
	else
	{
		cout << "a小于等于5" << endl;
	}
	system("pause");
	return 0;
}

4.1.2三目运算符

作用:通过三目运算符实现简单的判断

语法:表达式a  ?  表达式b:表达式c         (如果表达式a的值为真,则执行b返回b的值;a为假,则执行c返回C的值)

int a=10,b=5,c;     c=(a>b? a:b);   则c等于a的值,等于10;

int a=10,b=5;         (a>b ?  a:b)=20;则a=20,b=5;

4.1.3 switch语句

语法:

switch ( 变量表达式 )

{

case 常量1 :语句;break;

case 常量2 :语句;break;

case 常量n:语句;break;

default :语句;break;

}

#include<iostream>
using namespace std;
int main()
{
	int a;
	cout << "输入级别:";
	cin >> a;
	switch (a)
	{
	case 3:
		cout << "优秀!";
		break;
	case 2:
		cout << "良好!";
		break;
	case 1:
		cout << "及格!";
		break;
	default:
		cout << "差!";
		break;
	}
	system("pause");
	return 0;
}

4.2循环结构

4.2.1 while循环语句

作用:满足循环条件,执行循环语句

语法:while(循环条件){循环语句}          :先条件,后语句

(只要循环条件为真,就执行循环语句)

#include<iostream>
using namespace std;
int main()
{
	int a = 1;
	while (a <= 10)
	{
		cout << a << endl;
		a++;
	}
	system("pause");
	return 0;
}

4.2.2 do…while循环语句

作用:满足循环条件,执行循环语句

语法:do{循环语句} while(循环条件);          :先语句,后条件

(与while不同的是,会先执行一次循环语句,再判断条件)

#include<iostream>
using namespace std;
int main()
{
	int a = 1;
	do{
		cout << a << endl;
		a++;
	} while (a <= 10);
	system("pause");
	return 0;
}

4.2.3for循环语句

作用:满足循环条件,执行循环语句

语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}                  :表达式中间用分号隔开

#include<iostream>
using namespace std;
int main()
{
	int i;
	for (i = 1; i <= 10; i++)
	{
		cout << i << endl;
	}
	system("pause");
	return 0;
}

4.2.4嵌套循环

作用:在嵌套里面嵌套一层循环

eg:输出一个10*10的星星方格

#include<iostream>
using namespace std;
int main()
{
	int i;
	for (i = 1; i <= 10; i++)
	{
		for (int j = 1; j <= 10; j++)
		{
			cout<<" * ";
		}
		cout << endl;
	}
	system("pause");
	return 0;
}
4.3跳转语句

4.3.1break语句

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

break使用的时机:

  • 出现在switch条件语句中,作用终止case并跳出switch
  • 出现在while循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套循环中,跳出最近的内层循环语句

4.3.2continue语句

作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

4.3.3goto语句(不推荐)

作用:可以无条件跳转语句

语法:goto 标记;(如果标记的名称存在,执行到goto语句时,会跳转到标记的位置)

#include<iostream>
using namespace std;
int main()
{
	cout << "aaaa" << endl;
	cout << "bbbb" << endl;
	goto AL;
	cout << "cccc" << endl;
	cout << "dddd" << endl;
	AL:
	cout << "eeee" << endl;
	system("pause");
	return 0;
}

5,数组

数组就是一个集合,里面存放了相同类型的数据元素

  1. 数组中的每个元素都是相同的数据类型
  2. 数组是由连续的内存位置组成的
5.1一维数组

5.1.1一维数组的定义方式

三种定义方式

  • 数据类型 数组名[数组长度];
  • 数据类型 数组名[数组长度]={值1,值2,…};
  • 数据类型 数组名[  ]={值1,值2,…};                  //系统会根据元素的个数,自己计算出数组的大小
#include<iostream>
using namespace std;
int main()
{
	int a[5];
	for (int i=0; i < 5; i++)
	{
		cout << a[i];
	}
	cout << endl;

	int b[5] = { 1, 2, 3, 4, 5 };
	for (int i = 0; i < 5; i++)
	{
		cout << b[i];
	}
	cout << endl;

	int c[] = { 1, 2, 3, 4, 5 };       //自己会计算出数组的大小
	cout << endl; for (int i = 0; i < 5; i++)
	{
		cout << c[i];
	}
	cout << endl;

	system("pause");
	return 0;
}

5.1.2一维数组组名

一维数组名称的用途:

  • 可以统计整个数组在内存中的长度
  • 可以获取数组在内存中的首地址
#include<iostream>
using namespace std;
int main()
{
	int a[5] = { 1, 2, 3, 4, 5 };
	cout << "数组长度为" << sizeof(a) << endl;
	cout << "数组个数为" << sizeof(a) / sizeof(int) << endl;

	cout << "a的地址为" << a << endl;
	cout << "a[0]的地址为" << &a[0] << endl;

	system("pause");
	return 0;
}
5.2二维数组

就是在一维数组上多加了一个维度

5.2.1二维数组的定义方式

四种方法

  • 数据类型 数组名[行数][列数];
  • 数据类型 数组名[行数][列数]={{值1,值2},{值3,值4}};(推荐,更加直观)
  • 数据类型 数组名[行数][列数]={值1,值2,值3,值4};
  • 数据类型 数组名[    ][列数]={值1,值2,值3,值4};                   (此处也是系统会根据元素个数,自动算出行数大小)
#include<iostream>
using namespace std;
int main()
{
    //数据类型 数组名[行数][列数];
	int a[2][2];
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			cout << a[i][j];
		}
	}
	cout << endl;

    //数据类型 数组名[行数][列数]={{值1,值2},{值3,值4}};(推荐,更加直观)
	int b[2][2] = { { 1, 2 }, { 3, 4 } };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			cout << b[i][j];
		}
	}
	cout << endl;
    
    //数据类型 数组名[行数][列数]={值1,值2,值3,值4};
	int c[2][2] = { 1, 2, 3, 4 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			cout << c[i][j];
		}
	}
	cout << endl;


    //数据类型 数组名[    ][列数]={值1,值2,值3,值4};     
	int d[][2] = { 1, 2, 3, 4 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			cout << d[i][j];
		}
	}
	cout << endl;

	system("pause");
	return 0;
}

5.2.2二维数组组名

  • 查看二维数组所占内存空间
  • 获取二维数组首地址

那么如何才能正确的掌握Redis呢?

为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题

  • 并发编程面试题汇总

  • JVM面试题汇总

  • Netty常被问到的那些面试题汇总

  • Tomcat面试题整理汇总

  • Mysql面试题汇总

  • Spring源码深度解析

  • Mybatis常见面试题汇总

  • Nginx那些面试题汇总

  • Zookeeper面试题汇总

  • RabbitMQ常见面试题汇总

JVM常频面试:

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Mysql面试题汇总(一)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Mysql面试题汇总(二)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Redis常见面试题汇总(300+题)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

int j = 0; j < 2; j++)
{
cout << c[i][j];
}
}
cout << endl;

//数据类型 数组名[    ][列数]={值1,值2,值3,值4};     
int d[][2] = { 1, 2, 3, 4 };
for (int i = 0; i < 2; i++)
{
	for (int j = 0; j < 2; j++)
	{
		cout << d[i][j];
	}
}
cout << endl;

system("pause");
return 0;

}


**5.2.2二维数组组名**


* 查看二维数组所占内存空间
* 获取二维数组首地址





### 那么如何才能正确的掌握Redis呢?

为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题

*   并发编程面试题汇总

*   JVM面试题汇总

*   Netty常被问到的那些面试题汇总

*   Tomcat面试题整理汇总

*   Mysql面试题汇总

*   Spring源码深度解析

*   Mybatis常见面试题汇总

*   Nginx那些面试题汇总

*   Zookeeper面试题汇总

*   RabbitMQ常见面试题汇总

JVM常频面试:

[外链图片转存中...(img-3v0W1Oxj-1714882038193)]

Mysql面试题汇总(一)

[外链图片转存中...(img-7mh3TzR0-1714882038193)]

Mysql面试题汇总(二)

[外链图片转存中...(img-LnXhOZgQ-1714882038194)]

Redis常见面试题汇总(300+题)

[外链图片转存中...(img-FMvClld9-1714882038194)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618154847)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值