手机网站有什么区别是什么,wordpress模板2zzt,所有网站都要备案吗,建设局属于什么行业文章目录 C初识编写hello world注释变量常量定义常量的两种方式 关键字标识符命名规则 数据类型整形sizeof关键字实型#xff08;浮点型#xff09;字符型转义字符字符串型布尔类型数据的输入 运算符程序流程结构顺序结构选择结构三种形式三目运算符switch语句 循环结构while… 文章目录 C初识编写hello world注释变量常量定义常量的两种方式 关键字标识符命名规则 数据类型整形sizeof关键字实型浮点型字符型转义字符字符串型布尔类型数据的输入 运算符程序流程结构顺序结构选择结构三种形式三目运算符switch语句 循环结构while循环语句do...while循环语句for循环语句 跳转语句break语句continue语句goto语句 数组一维数组一维数组定义方式 二维数组定义方式数组名的用途 函数定义函数的声明函数的分文件编写 指针空指针和野指针空指针野指针 const修饰指针 结构体结构体定义使用结构体数组结构体指针结构体嵌套结构体结构体做函数参数 C初识
编写hello world
# include iostreamusing namespace std;int main() {cout hello world endl;return 0;
}注释
单行注释//注释内容多行注释/*注释内容*/
变量 作用给一段指定的内存空间取名方便操作这段内存 语法类型 变量名 初始值;
常量
用于记录程序中不可更改的数据
定义常量的两种方式 #define宏常量#define 常量名 常量值通常在文件上方定义表示一个常量 const修饰的常量const 数据类型 常量名 常量值通常在变量定义之前加const修饰该变量为常量不可更改
关键字
关键字是C预先保留的字符在定义变量或者常量时不要使用
标识符命名规则 标识符不能是关键字 只能由字母、数字、下划线组成 第一个字符必须是字母或者下划线 标识符中字母区分大小写
数据类型
C规定在创建一个变量或者常量的时必须要指定出相应的数据类型否则无法给变量分配内存存在意义给变量分配合适的内存空间
整形 作用整形表示的是整数的数据类型 c能够表示整形的类型有以下几种方式区别在于所占内存空间的不同
数据类型占用空间取值范围short短整型2字节-215~215-1int整形4字节-231~231-1long(长整形)windows为4字节Linux32位为4字节64位为8字节-231~231-1long long(长长整型)8字节-263~263-1
sizeof关键字
sizeof关键字可以统计数据类型所占内存大小语法sizeof(数据类型/变量 )演示
#include iostreamusing namespace std;int main() {short a 10;cout short 类型所占内存空间为 sizeof(a) endl;cout int 类型所占内存空间为 sizeof(int) endl;cout long 类型所占内存空间为 sizeof(long) endl;cout long long 类型所占内存空间为 sizeof(long long) endl;return 0;
}实型浮点型
小数默认的是double类型可以在float类型的小数值后面直接加一个f减少一次double到float的强制类型转换float f 3.14f;
数据类型占用空间有效数字范围float4字节7位有效数字double8字节15~16位有效数字
科学计数法表示小数
#include iostreamusing namespace std;int main() {float f1 3.14f;cout folat 值 f1 float 占用空间大小 sizeof(f1) endl;double d1 3.1415926;cout double 值 d1 double 占用空间大小 sizeof(d1) endl;// 科学计数法float e1 3.14e4; // 3.14 * 10^4float e2 3.14e-4; // 3.14 * 0.1^4cout 科学计数法e1值 e1 endl;cout 科学计数法e2值 e2 endl;return 0;
}字符型 字符型变量用于显示单个字符单个字符使用单引号包裹 语法char 变量名 变量值; c和c中变量只占1个字节 字符型变量并不是把字符本身放到内存中存储而是将对应的ASCII编码放入到存储单元
转义字符
作用用于表示一些不能显示出来的ASCII字符
字符串型 作用用于表示一串字符字符串使用双引号包裹 两种风格 c风格字符串char str[] hello; c风格字符串string 变量名 字符串值;需要包含头文件#include string
#include iostream
#include stringusing namespace std;int main() {char str[] hello;cout str endl;string str1 world;cout str1 endl;return 0;
}布尔类型 布尔类型代表真或者假的值 布尔类型只有两个值true或者false 布尔类型占1个字节大小
数据的输入 作用用于从键盘获取数据 关键词cin 语法cin 变量
# include iostreamusing namespace std;int main() {int a;cin a;cout 收到的输入a的值是 a endl;return 0;
} 运算符 作用用于执行代码的计算 分类
运算符类型作用算术运算符处理四则运算赋值运算符将表达式的值赋值给变量比较运算符用于表达式的比较并返回一个真值或假值逻辑运算符用于根据表达式的值返回真值或假值
程序流程结构
顺序结构
程序按顺序执行不发生跳转
选择结构
根据是否满足条件有选择的执行相应的功能
三种形式 单分支if 多行格式if...else.. 多条件if...elseif...else
三目运算符
语法表达式1?表达式2:表达式3如果表达式1为真执行表达式2否则执行表达式3
switch语句 作用执行多条件分支语句 语法
switch(表达式){case 结果1: 执行语句;break;case 结果1: 执行语句;break;... ...default: 执行语句;break;
}循环结构
根据是否满足条件循环多次的执行某段代码
while循环语句
语法while(循环条件){循环语句}只要条件为真就执行循环语句
do…while循环语句
语法do {循环语句} while(循环条件)与while循环的区别是先执行一次循环语句在判断条件是否成立
for循环语句
语法for(初始表达式;条件表达式;变量变化表达式){循环语句}
跳转语句
break语句 作用用于跳出选择结构或者循环结构 使用时机 出现在switch条件语句中作用是终止case并跳出switch 出现在循环语句中作用是跳出当前循环语句 出现在嵌套循环中作用是跳出离它最近的一层训话
continue语句
作用在循环语句中跳过本次循环中余下尚未执行的代码继续执行下一次循环
goto语句 语法goto 标记; 如果标记名称存在执行到goto语句时会跳转到标记的位置
#include iostream
using namespace std;
int main(){cout 1 endl;goto LABEL;cout 2 endl;cout 3 endl;LABEL:return 0;
}数组 数组就是一个集合里面存放着相同类型的数据元素 数组名的命名规范和变量名命名规范一致 特点 数组中每个元素都是相同的数据类型 数组是由连续的内存位置组成的 数组元素下标是从0开始的
一维数组
一维数组定义方式 // 数据类型 数组名[数组长度];int arr1[10];// 数据类型 数组名[数组长度] {值列表}int arr2[3] {1, 2, 3} ;// 数据类型 数组名[] {值列表}int arr3[] {3, 4};二维数组定义方式
数组类型 数组名[行数][列数];
数组类型 数组名[行数][列数]{{数据1,数据2},{数据3数据4}};
数组类型 数组名[行数][列数]{数据1,数据2,数据3数据4};
数组类型 数组名[][列数]{数据1,数据2,数据3数据4};数组名的用途
可以统计整个数组在内存中的长度sizeof(数组名)可以获取数组在内存中的首地址
函数
定义
返回值类型 函数名 (参数列表)
{函数体;return 返回值;
}函数的声明 作用告诉编译器函数名称及如何调用函数函数的实际主体可以单独定义 函数的声明可以有多次单函数的定义只能有一次
函数的分文件编写
创建后缀为.h的头文件创建后缀为.cpp的源文件在头文件中写函数的声明在源文件中写函数的定义
指针
不管是什么数据类型32位操作系统下指针占4字节64位操作系统下指针占8字节
空指针和野指针
空指针 指针变量只想内存中编号为0的空间 用途初始化指针变量int * p NULL; 注意空指针指向的内存是不可以访问的0~255之间的内存编号是系统占用的因此不可以访问
野指针
指针变量指向非法的内存空间
const修饰指针
常量指针const修饰指针指针的指向可以修改但是指针指向的值不可以修改
int a 10;
const int * p a; 指针常量const修饰常量指针的指向不可以修改但是指针指向的值可以修改
int a 10;
int * const p a; const即修饰指针又修饰常量既不可以修改指针的指向也不可以修改指针指向的值
int a 10;
const int * const p a; 结构体
结构体定义使用 结构体类型属于用户自定义类型允许用户存储不同的数据类型 语法
struct 结构体名 {// 成员变量
}通过结构体创建变量 struct Student stu1;// 创建结构体变量时struct关键字可以省略Student stu2 {name:zs, age:18};struct Student stu3 {lisi, 20};// 结构体变量利用.访问成员cout stu1.name stu1.age endl;结构体数组 // 创建结构体数组Student stus[2] {{name:zhangsan, age:10},{name:wangwu, age:78}};// 给结构体中的元素赋值cout 修改前的值 stus[1].name endl;stus[1].name zsx;cout 修改后的值 stus[1].name endl;// 遍历结构体数组for (int i 0; i sizeof(stus) / sizeof(Student); i) {cout 姓名 stus[i].name 年龄 stus[i].age endl;}结构体指针 通过指针访问结构体中的成员 使用-运算符可以通过结构体指针访问结构体中的属性 Student *pstu stu2;cout 修改前-》姓名 pstu-name 年龄 pstu-age endl;pstu-name aaa;cout 修改后-》姓名 pstu-name 年龄 pstu-age endl;结构体嵌套结构体
// 定义结构体
struct Student {string name;int age;
};struct Teacher {string name;int age;Student stu;
};// 结构体嵌套
Teacher tea {name: canglaoshi,age: 40,stu:{name: xiaocang,age: 18,},
};
cout 老师信息名字- tea.name 年龄- tea.age 老师的学生信息 学生名字- tea.stu.name 学生年龄- tea.stu.age endl;结构体做函数参数
值传递不会修改主函数中的值指针传递会修改函数中的值使用指针可以避免在结构体特别大时值传递浪费大量空间
// 值传递
void printStudentInfo1(Student stu) {cout 姓名 stu.name 年龄 stu.age endl;
}// 指针传递
void printStudentInfo2(Student *stu) {cout 姓名 stu-name 年龄 stu-age endl;
}
// const指针传递
void printStudentInfo2(const Student *stu) {// stu.name zhangsan 因为是const所以不能进行该操作cout 姓名 stu-name 年龄 stu-age endl;
}