C++
- 空指针:指针变量指向编号为0的空间,不可访问。(0~255为系统占用内存,用户不可访问。)
- 野指针:指向非法空间,也就是指向一块内存没有被分配(没有被申请)的空间。
- const修饰指针:1.常量指针:const修饰的是*p,*const int p 也就是指针的指向可以改,指针指向的值不可以改。2. 指针常量:const修饰的是p,*int const p ,指针的指向不可以改,指针指向的值可以改。3.const修饰指针和变量:const int * const p,都不可以改。
- 指针与函数与数组:1.数组名字就是数组的首地址。2.传递地址进函数可以修改外面的值。
- 结构体数组: struct student arr[ ] ={{}, {}, {}} like this.
- 结构体指针:1.语法:struct student stu ={}, struct *p = &stu .2.指针访问: p->name ,用箭头访问。
- 结构体做函数参数: struct student {string name; int age ;int score}; 1.传值 void printStudent(student stu)
2.传地址 void printStudent(student * stu) 传值的话,和原有的数据不是同一份,也就是说传值会复制数据,会占据更多的内存,而传地址只会占用4个字节,它只是数据的一个地址,通过地址来访问数据。 - 结构体const:上面传地址的情况下能用到,我们希望传地址,但又不希望函数通过地址能够随便修改地址的值,所以需要一个const修饰,语法 void printStudent(const student * stu)