既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
课前闲聊
大家好,这里是小Z,因为最近的一些纠纷,所以暂时没跟新,但是,现在,我回来了!!!废话不多说,我们直接来说一下这次的新系列——小Z私人课,那么,这个系列是为了那些没有买关于编程比赛备考书的兄弟们,所以大部分为书上内容,我也会在标题上说明素材来源,如果喜欢这些书,可以去购买,那么,话不多说,进入这节私人课吧!!!
开始上课
作者对指针的理解
指针是C++语言的一个重要概念,也是C++语言的重要特色。C++语言的高度灵活性及极强的表达能力,在很大程度上表现在巧妙而灵活的运用指针。通过指针可以有效地表示复杂的数据结构;能够方便地处理数组和字符串;能够动态地分配内存,直接对内存地址进行操作;利用指针作为函数参数,能够实现“一次函数调用,有多个返回值”的目的。因此,必须深入学习和理解指针的概念,体会和掌握指针的各种操作,熟练应用指针去实践编程。应该说,不掌握指针就没有掌握C++语言的精华。
指针的概念
我们知道,“int a=3;”就表示定义一个整型变量a并把它的值初始化为3。那么,系统就在内存的某个区域开辟4个字节的连续单元存放a。对a的读写就是对该内存区域的存取操作。但是,具体是哪4个单元,我们并不关心。内存单元的位置(编号)就叫做“地址”,可以通过取地址操作符“&”获得a的起始地址(首个存储单元的地址):&a。
指针也是个变量。和普通变量不同的是,指针变量里存储的数据是一个内存地址,就好像一个指示器,指引着你去该内存地址开始的一块内存区域存取数据。
指针的定义和使用
指针变量的定义格式为:
数据类型*指针变量;
例如,“int*p=NULL;”表示定义一个指针变量p,p存放的是一个内存地址,这个区域存放的是一个整数。初始化为NULL(如果定义的是全局指针变量,则默认就是,可以省略),表示空地址(相当于整形变量初始化为0)。
可以通过赋值语句给指针变量赋值,例如“p=&a;”表示把变量a的内存地址赋值给p。所以,可以通告p间接地操作a,这时,需要用到指针操作符“*”,即“*p”等价于a。
指针的理解
对于指针,要理解以下4个方面的内容:指针的类型,指针所指的向的类型,指针的值或者叫指针所指向的内存区域,还有指针本身所占据的内存区。
(1)指针的类型
从语法角度看,把指针定义语句里的指针名字去掉,剩下的部分就是这个指针的类型,也就是指针本身所具有的类型。
int *ptr;//指针的类型是int *
char *ptr;//指针的类型是char *
int **ptr;//指针的类型是int **
int (*ptr)[3];//指针的类型是int (*)[3]
int *(*ptr)[4];//指针的类型是int *(*)[4]
(2)指针所指向的类型
当通过指针来访问指针所指向的内存区域时,指针所指向的类型决定了编译器将把那片内存区域里的内容当做什么来看待。从语法上看,把指针定义语句中的指针名字和名字左边的指针声名符“*”去掉,剩下的就是指针所指向的类型。
int *ptr;//指针的类型是int
char *ptr;//指针的类型是char
int **ptr;//指针的类型是int *
int (*ptr)[3];//指针的类型是int ()[3]
int *(*ptr)[4];//指针的类型是int *()[4]
在指针的算术运算中,指针所指向的类型有很大的作用。指针的类型和指针所指向的类型是两个不同的概念。
(3)指针的值
指针的值是指针本身存储的数值,这个值将被编译器当做一个地址,而不是一般的数值。在位长32位的系统中,内存地址都是32位的,所以所有类型的指针都是一个32位整数。指针所指向的内存区域就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区域。我们说一个指针的值是X,就相当于说该指针指向了以X为首地址的一片内存区域。指针所指向的内存区域和指针所指向的类型是两个完全不同的概念。
(4)指针本身所占据的内存区
指针本身占了多大内存?你只要用函数sizeof(指针的类型)测一下就知道了。在32位的系统中,指针本身占据了4字节的长度。
实践巩固
若有语句“int a=4,*p=&a”,下列均代表地址的一组选项是()。
A a,p,&*a
B *&a,&a,*p
C &a,p,&*p
D *&p,*p,&a
答案为D
课后作业
第一题:数字变化
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**