C++笔记 【指针】【结构体】
goto 语句格式
goto A//标记一般为大写
A://标记
执行goto标记可以跳转到标记位置
c++数组的格式
求数组长度
    
打印数组首地址是直接用数组名不加数组下标:(如下图)
    
一维数组
    
二维数组
    
       
函数的定义方式

  
 
  值传递特性:
    形参改变不会影响实参
如果不需要返回值可以将返回值类型处填写void 且不写return语句;
函数的常见方式

函数的声明
目的是提前告诉编译器函数的存在,否则函数只能定义在主函数的前面,可以多次声明,但是只能一次
函数声明的写法: 数据类型 函数名 (参数);
函数的分文件编写
1.创建.h为后缀名的头文件
2.创建.cpp为后缀的源文件
3.在头文件中声明函数
4.在源文件中定义函数
5.在定义函数的源文件中调用用包含定义好的头文件;格式为:#include "头文件" 注:自定义的头文件是用双引号包裹的
6.在主函数所在的源文件中也调用该头文件
指针
可以通过指针保存地址(指针就是地址)
指针的定义语法:: 数据类型 * 指针变量名;
  
图中的&为取值符号,p=&a;是将a的地址存放在p中
使用指针 :* 指针名;
当p指向a的地址是,*p就是a,相当于伪装成主人并且进入主人家里
  
指针存放的是地址(16进制),在32位操作系统占用四个字节、在64位操作系统中占用八个字节。
空指针
空指针定义:数据类型 * 指针名=NULL;
    
内存编号0~255被系统占用是不可以访问的 ,否则将出现错误
野指针
野指针应当避免,如:数据类型 指针名= (int*)未知的内存地址;
    
示例:
    
const修饰指针
在指针的前面加上const就成了const指针
     
1.常量指针
写法:const 数据类型 * 指针名 = &指向的变量;
特点:可以更改指向,但是指向的值是不可以改的(多文件只读模式)
2.指针常量
写法:数据类型 * const 指针名 = &指向的变量;
特点:可以更改指向的值,不可以更改指向(单文件操作)
3.即修饰指针又修饰常量
写法:const 数据类型 * const 指针名 = &指向的变量;
特点:不可以更改指向,也不可以更改指向的值(单文件只读模式)
指针访问数组

结构体定义
struct 结构体名{
数据类型 属性名;
数据类型 属性名;
}
 如图:
指针访问结构体的属性是采用->(称为操作符。参考下方代码18行)
结构体数组(先要定义结构体)
结构体名 数组名[长度]={
{属性名,属性名 },
{属性名,属性名 }
}
引用
结构体名[下标].属性名="值";
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 struct Xuesheng {//定义结构体 5 string Xingming; 6 int Nianling; 7 int Fenshu; 8 }; 9 int main() { 10 system("chcp 65001"); 11 Xuesheng Liebiao[3] = { "zhangsan" ,14,100}; 12 Liebiao[1] = { "lisi",13,45 }; 13 Liebiao[2] = { "wangwu",12,32 }; 14 cout << Liebiao[0].Xingming << endl;//直接打印 15 cout << Liebiao[1].Xingming << endl;//直接打印 16 cout << Liebiao[2].Xingming << endl;//直接打印 17 struct Xuesheng * p = &Liebiao[0];//指向地址 18 cout << p->Nianling<< endl;//指向属性 19 system("pause"); 20 }
结构体嵌套
#include <iostream> #include <string> using namespace std; struct Xuesheng {//定义学生 string Xingming; int Nianling; int Fenshu; }; struct Laoshi {//定义老师 string Xingming; int Nianling; int id; Xuesheng xuesheng;//嵌套结构体 }; int main() { //system("chcp 65001"); //向结构体中添加数据 Laoshi y; y.Xingming = "张"; y.Nianling = 30; y.id = 1; y.xuesheng.Xingming = "凉子"; y.xuesheng.Nianling = 20; y.xuesheng.Fenshu = 98; //引用数据 cout << "老师姓名:" << y.Xingming << endl << "老师年龄:" << y.Nianling << endl << "老师编号:" << y.id << endl << endl << "老师的学生" << y.xuesheng.Xingming << "分数" << y.xuesheng.Fenshu << "年龄" << y.xuesheng.Nianling; system("pause"); }
结构体做函数的参数
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 struct Laoshi {//定义老师 6 string Xingming; 7 int Nianling; 8 int id; 9 }; 10 void quandayin(Laoshi y) {//值传递 11 cout << "通过函数传递值打印" << endl; 12 cout << "姓名:" << y.Xingming << endl 13 << "年龄:" << y.Nianling << endl 14 << "教师编号" << y.id << endl<<endl; 15 16 } 17 void quandayin2(Laoshi* p) {//地址传递 18 cout << "通过函数传递地址打印" << endl; 19 cout << "姓名:" << p->Xingming << endl 20 << "年龄:" << p->Nianling << endl 21 << "教师编号" << p->id << endl; 22 } 23 int main() { 24 //system("chcp 65001"); 25 //向结构体中添加数据 26 Laoshi y; 27 y.Xingming = "张"; 28 y.Nianling = 30; 29 y.id = 1; 30 31 quandayin(y);//传递值 32 quandayin2(&y);//传递地址 33 system("pause"); 34 }
const修饰结构体

使用指针可以减少内存空间的占用,增加const可以防止误操作修改了改地址中的数据
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号