C++, C language grammar basic learning essays

/*
常量的定义方式
	1、#define 宏常量
	2、const 修饰的变量
*/

/*
关键字
标识符命名规则
	1、标识符不能是关键字
	2、标识符只能由字母、数字和下划线组成
	3、标识符第一个字符只能是字母或下划线
	4、标识符是区分大小写的
建议:给变量起名的时候,最好能见名知意
*/

/*
sizeof 关键字
	语法: sizeof(数据类型/变量)
*/

/*
创建变量语法: 数据类型 变量名 = 变量初始值
数据类型存在的意义:
	给变量分配合适的内存空间
整型
short		2字节 										(15
int 		4字节 										(31
long		win 4字节,Linux 32位 4字节 64 位 8字节 	(31
long long	8字节 										(62

实型(浮点型)
float		4字节		float f1 = 3.14f;	小数默认是双精度,加个f代表单精度,减少转换
double		8字节
默认情况下,输出一个小数会输出六位小数
科学计数法				float f2 = 3e2;		3 * 10 ^2

字符型
char		1个字节
作用:字符型变量用于显示单个字符
语法:char ch = 'a';
	注意1、在显示字符型变量时,用单引号将字符括起来,不要使用双引号		char a = "s";	错误
	注意2、单引号只能有一个字符,不可以是字符串							char a = 'sddjjd"	错误
字符型变量对应ASCII编码		(int)ch

字符串型
作用:用于表示一串字符
	1、c风格字符串: char 变量名[] = "字符串常量"
	2、c++风格字符串:string 变量名 = "字符串常量"		头文件

布尔类型bool
	true	1		1个字节
	false	0		1个字节
bool flag = true;

转义字符
	换行符		\n
	反斜杠		\\
	水平制表符	\t			占八个字符的位置,整齐的输出数据

数据的输入
cin
cin >> 变量;

*/

/*
运算符
1、算术运算符
	正负 加减乘除 取模 前置递增 后置递增 前置递减 后置递减
	前置后置的区别
		前置递增 先让变量+1,在进行表达式运算
		后置递增 先进行表达式运算,在进行+1
2、赋值运算
3、比较运算符
4、逻辑运算符
	非 !  与 &&   或 ||
*/

/*
选择结构
单行	多行	多条件
	if
	else if
	else
嵌套if语句

三目运算符
语法:表达式1 ?表达式2:表达式3;
返回的是变量

switch语句				表达式类型只能是整型或字符,不能是区间
语法:switch(表达式)
		{
			case 条件:
				break;
			......
			default:
				break;
		}

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

do{..}while(循环条件);

for循环语句

嵌套循环

跳转语句	break
continue语句
goto语句		可以跳转到标记处
语法:goto FLAG;
	  .....
	  FLAG:
	  ......
*/

/*
一维数组:
	数据类型 数组名 [数组长度];		定义数组时,必须要有一个初始长度
	数据类型 数组名 [数组长度] = {值1, 值2 ,...};	如果没有全部赋值,会用0来填充
	数据类型 数组名[] = {值1, 值2 ,...};
特点:
	放在连续的内存空间中
	数组中每个元素都是相同的数据类型
一维数组名的用途:
	1、可以统计整个数组在内存中的长度;	sizeof(arr)	数组长度	sizeof(arr[0])	元素长度
	2、可以获取数组在内存中的首地址。	arr	= &arr[0]

二维数组:
	数据类型 数组名[行数][列数];
	数据类型 数组名[行数][列数] = {
    
    {数据1,数据2},{},{}};
	数据类型 数组名[行数][列数] = {数据1,数据2,..数据n};
	数据类型 数组名[][列数] = {数据1,数据2,..数据n};
二维数组名称用途:
	1、可以查看占用内存的大小;		sizeof(arr)	数组长度	sizeof(arr[0])	第一行占用空间	sizeof(arr[0][0])	一个数据占用的空间
	2、可以查看二位数组的首地址。	(int)arr = (int)arr[0] = (int)arr[0][0]
*/

/*
函数:
	1、返回值类型
	2、函数名
	3、参数列表
	4、函数体语句
	5、return 表达式
语法:
	返回值类型 函数名 参数列表
	{
		函数体语句;
		return 表达式;
	}
函数定义时的参数时形参
函数调用时的参数是实参
调用时,实参传递给了形参

当值传递的时候,如果形参改变,不会影响到实参
无参无返
有参无返
无参有返
有参有返
定义只能有一次

函数的声明:

*/

/*
函数的分文件编写
	1、创建.h后缀名的头文件
	2、创建.cpp后缀名的源文件
	3、在头文件中写函数的声明
	4、在源文件中写函数的定义
*/

/*
指针:
指针的作用:可以通过指针间接访问内存
	内存编号是从0开始的,一般用是十六进制数字表示
	可以利用指针变量保存地址
定义一个指针:
	数据类型 * 指针变量名:
	int * p;
	让指针记录变量a的地址:
	p = &a;
指针占用空间大小:32位占4个字节		64位占8个字节	sizeof(int *);

空指针和野指针:
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
		int *p = NULL;
		空指针指向的内存是不可以访问的
		0~255是系统占用内存,因此不可以访问
野指针:指针变量指向非法的内存空间
		int *p = (int *)0x2020;		
		cout << *p << endl;		//错误,不能访问

常量指针
const修饰指针
	const int *p = &a;
	特点:指针指向可以改,但是指针指向的值不可以改
指针常量
int * const p =&a;
	特点:指针指向的不可以改,指针指向的值可以改

const既修饰指针,又修饰常量
	const int * const p = &a;
	特点:都不可以更改

指针和数组:int *p = arr;		p++;
指针和函数:
	地址传递:会改变实参的值

*/

/*
结构体
结构体基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。
语法:struct 结构体名{结构体成员列表};
结构体创建变量方式:
	1、struct 结构体名 变量名
	2、struct 结构体名 变量名 = {成员1值,成员2值....}
	3、定义结构体时,顺便创建变量
struct Student
{
	string name;
	int age;
	int score;
}s3;
struct Student s1;
struct Student s2 = { "wang",20,9090 };

结构体数组:
作用 :将自定义的结构体放入到数组中方便维护
语法:struct 结构体名 数组名[元素个数] = {
    
    {},{},...{}}
struct Student stuArray[3] = {
					{"zhang",18,100},
					{"wang",20,120},
					{"li",20,348}
				};
stuArray[2].name = "san";

结构体指针:
作用:通过指针访问结构体中的成员
	使用操作符 -> 可以通过结构体指针访问结构体属性
struct Student s2 = { "wang",20,9090 };
struct student *p = &s2;
cout << p -> name << p -> age << p -> score << endl;

结构体嵌套结构体:
作用:结构体中可以是另一个结构体
struct teacher
{
	int id;
	string name;
	struct student stu;		//定义在前面
};

teacher t;
t.id = 10000;
t.stu.name = "王”;
t.stu.score = 100;

结构体做函数参数:
作用:将结构体作为参数向函数传递
传递方式:
	值传递
	地址传递
struct Student
{
	string name;
	int age;
	int score;
}s3;
值传递:
	void printStudent(struct Student s)
	printStudent(s3);	//复制一个副本,占用内存大小为结构体大小
地址传递:
	voud printstudent(struct Student *p)
	printstudent(&s);	//占用内存大小为指针所占的大小,始终为4个字节
结构体中const使用场景:
作用:防止误操作
*******将函数中的形参改为指针,可以减少内存空间,而不会赋值新的副本出来*********
	voud printstudent(const struct Student *p)		//一旦有修改的操作,就会报错,防止误操作
*/

Guess you like

Origin blog.csdn.net/Fighting_gua_biu/article/details/112293601