C++学习之关于指针的一些思考

来源:互联网 发布:ubuntu install kde 编辑:程序博客网 时间:2024/05/16 16:16

C++学习之关于指针的一些思考


最近在LeetCode上面刷链表的题,涉及到很多对指针的操作,做起来十分吃力。遂查询资料,企图认真理解指针之后能够对刷题产生一些帮助。

本文主要是对这个博客一些总结和思考,具体链接


定义方式 指针的类型 指针指向的类型 自加的结果 int *ptr int * int ptr++,地址向高位+4 char *ptr char* char ptr++,地址向高位+1 int **ptr int**(可看做行数列数均不确定的二维数组首地址) int** int (*ptr)[3] int(*)[3](列数为3的二维数组) int ()[3] ptr++,地址位向高位+12

文章上面的内容不一一介绍。主要在这里写下自己的思考:

  • 指针的本质是地址,具体来说是某块内存的首地址

    在定义一个指针的时候,指针的类型,包括指针所指向的类型已经确定。指针的类型和指针所指向的密切相关的,可以这么说一个确定了,另外一个必然也就确定了。但是无论指针的类型怎么变,指针的类型任然是地址。

  • 指针是一个地址变量,像所有的变量一样,它也有类型

    指针是有类型的,但是还是强调,就算不同的类型的指针,其本质还是一样的是地址,只跟系统中怎么去表示一个地址相关,跟其具体的指针类型关系不大。指针类型是确定其指向内存区域的大小,在赋值的时候需要分配多大的内存。eg. int (*ptr)[3]:可认为其指向的是一个行数不确定的列数确定为3的数组。每当ptr++的时候,地址向高位+3*4=12个。


原创粉丝点击