day2-c++

c++ 基识-day2 - 数组、函数、指针、结构体

数组

-- 存储相同的数据类型
--  存储在连续的内存位置
--  数组从索引 0 开始,即通过下标来访问数组中的元素

**--- 数组定义:**

		-- 数据类型  数组名[数组长度];
	
		-- 数据类型  数组名[数组长度] = {值1,值2,,,,,,};
		--- 初始化时,未全部赋值,余下的会用0填充
		
		-- 数据类型  数组名[ ] = {值1,值2,,,,,};
	
		--- sizeof(arr)    ---》  统计 整个数组在内存中的长度
		--- 数组在内存中的首地址:    cout  <<  arr  << endl;
		--- 数组第一个元素在内存中的地址:    cout  <<  &arr[0]  << endl;

	---  数组名是常量,不可以进行赋值操作;

		---  二维数组
			--- 数据类型  数组名 【行数】【列数】;
			---  数据类型  数组名 【行数】【列数】 = {{数1,数2},{数3,数4}};
			---  数据类型  数组名 【行数】【列数】 = {数1,数2,,,,,,,,};
			---  数据类型  数组名 【】【列数】 = {数1,数2,,,,,};

		----  

函数

--- 函数的定义
	--- 返回值类型
	--- 函数名
	--- 参数列表
	--- 函数体语句
	--- return 表达式

--- 语法:
	---  返回值类型  函数名   (参数列表){
						函数体语句
						return 表达式
					}

	---  函数的调用
			---  函数名(参数)
			
	--- 值传递
		--- 即:函数调用时,实参将数值传递给形参
		--- 值传递时,若形参发生变化,并不会影响实参

	---函数 常见样式
		--- 无参无返、有参无返、无参有返、有参有返

	--- 函数的声明
		--- 函数可以声明多次,同一个函数只可定义一次;
		--- 函数的声明:  返回值类型  函数名  (参数列表);

	---  函数的分文件编写
			--- 函数分文件编写步骤:
				--- 创建后缀为   .h  的头文件
					--- 在头文件中 引用源文件  #include<iostream>   using namespace std;
				--- 创建后缀为    .cpp   的源文件
					--- 在源文件中引用头文件    #include "创建的  .h   文件"
				--- 在头文件中写函数的声明
				--- 在源文件中写函数的定义
	
			---   在需要的文件中引用编写的分文件,  添加引用自己编写的头文件     #include "创建的  .h  文件"

			----  eg:
				---  
				---  void swap(int a,int b);        头文件中书写
				--- void swap(int a,int b){int tmp = a;a = b;b = tmp}      源文件中书写

指针

	--- 作用:可以通过指针间接访问内存(保存的就是变量在内存中的地址)
		--- 内存编号是从0开始记录,一般用十六进制数组表示;
		--- 可以利用指针变量保持地址

	--- **定义及使用**
		--- 数据类型    * 变量名;
		--- eg:   int  a = 10;    int  * p;   p = &a(让指针p记录变量a的地址);     其中:&  表示取址符号操作;
						----  可以通过   在指针前  加   *   代表 解引用,找到指针指向的内存中的数据;
						----  *p = 10000;   来修改  a  所表示的值;


	--- 指针所占的内存空间
			----  在32位操作系统下:占用4个字节空间   不管是什么类型数据
			----  在64位操作系统下:占用8个字节空间    不管是什么类型数据
			----  int a = 10;  int  * p = &a;
			----  sizeof(int  *)     或者  sizeof(p)     
			


	--- 空指针、野指针
			--- 空指针
				---  指针变量指向内存中编号为0的空间
				---  初始化指针变量
				---  空指针指向的内存是不可以访问的
				--- eg: int  * p = NULL;

			---  野指针
				--- 指针变量指向非法的内存空间
				---  int   *  p  = (int  *)0x1100



	--- const修饰指针
		--- const 修饰指针   ---》 常量指针,(指针指向可以改,指针指向的值不可以更改)
			--- int a = 10;  int b = 10;  int * p = &a;
			--- const int * p = &a;  *p = 20(出错);        p = &b(正确);
			
		--- const 修饰常量    ---》 指针常量 , (指针指向不可修改,指针指向的值可以修改)
				--- int * const p = &a;
				--- *p = 20(正确);     p = &b(出错);

		--- const 既修饰指针,又修饰常量,    (指针指向和指向的值均不可以修改)
				---- const  int * const p = &a;
				---- *p = 20(出错);     p = &b(出错);



	--- 指针和函数   ----- 》  先用指针获得目标的首地址
			----  int  arr[10];    --->  int  * p   = arr // arr就是数组首地址;    p++;//让指针向后偏移4个字节
				
			--- 值传递
				--- 值传递,不会改变实参
			--- 地址传递   ----》   地址传递,可以修饰实参
				--- swap(&a,&b)


	--- 指针、数组、函数
		--- 

结构体

--- 自定义数据类型,可存储不同的数据类型;

--- 定义及使用;
	--- 语法:
		--- struct 结构体名 {结构体成员列表};
			--- 创建方式:
				--- struct 结构体名 变量名
				--- struct 结构体名 变量名 = {成员1值,成员2值,,,,}
				--- 定义结构体是顺便创建变量
	
	--- eg:
		----   struct stu{
				string name;
				int age;
				int height;
				int idnum;
				}
		

		--- 结构体函数
			--- struct 结构体名 数组名【元素个数】 = {{},{},。。。。,{}}
			

		--- 结构体指针
				----  利用操作符:   ->   可以通过结构体指针访问结构体属性
				----  struct stu  {age,id}
				---- stu s
				---- stu * p = &s
				---- p -> name    p->age



		--- 结构体嵌套结构体
				---  struct tech{int id;string name; struct stu ss}
				--- struct stu{string name; int age}
				



		--- 结构体做函数参数
			--- 值传递
			--- 地址传递



		--- 结构体中的  const  使用场景
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页