关于指针,我想说
来源:互联网 发布:沐沐是什么软件 编辑:程序博客网 时间:2024/05/01 23:03
指针,作为C语言编程的核心内容,在后期的项目里,是需要广泛应用的。但是,我们之中还有不少人对它很陌生,所以今天我就在这里将一些关于指针的小总结,希望对你们认识它可以起到帮助。
指针,换句话来说,就是一个地址,它代表的就是一个常量或者变量的地址。所以指针又可以分为指针变量和变量指针。所谓·指针变量就是一个有存储空间·的变量,在这个变量里面放着地址。通俗点来讲,指针就好比一个标志牌,你可以通过这个标志牌访问你想要的地址,打个比方吧。一栋大楼,如果你要去A区303,但是那些房子都是一样的时候,如果没有门牌号,你是很难到达这个地方的,所以,有了指针的存在,你就可以更加方便的访问元素。
由于指针和内存之间有着很明显的联系,所以在这里我有必要小小的渗透一下内存方面的小知识。在计算机里面,内存也是分成不同的块,这些块有着不同的运算速度,存储着不同类型的数据。从低到高,可以分为程序代码区,文字常量区,静态区,堆区,栈区,而我们要让数据进行运行的,就是在栈区进行的。而我就用数组作为想要使用的数据结构吧。
数组的存储,和整形数据的存放方式是刚好相反的,整形数据存放在栈里面,所以需要进行压栈的操作,因此,它的数据存储是从低地址往高地址存放的,栈的存储有个特点,先存进去的后取出来,这是对于整数而言的,数组呢,它的存储就不一样了,先存进去的,也会先取出来,所以先存的放在高地址,依次向下递减。好了,关于数组的存放先讲这些了,我还是放在重点上吧。
声明一点:定义是有空间的,而声明是没有空间的,所以当你定义了一个指针变量,实际上你也就开辟了一定的内存空间。而在32位的操作系统里面,开辟的是4个字节,同样的,放在64位操作系统里面,开辟的就是8个字节。
指针变量,作为一个变量,也是有不同的数据类型的。常用的数据类型有int型,char型,float型,double型。不管是是什么类型,开辟的空间都是四个字节,这点是不会变的。对指针加1,相当于让指针指向当前元素的下一个地址。这里又会牵扯到一个关于左值和右值的概念。所谓左右值,简单来说,就是在=号左右两边的值。关于左右值,可以这样来说,如果是一个常量,那就只能做右值,看几个小例子
&ch 这是一个地址常量,所以可以做右值,但是不能作为左值
*(cp+1)这里是指向cp的下一个地址,而下一个地址可以作为一个常量,也可以作为一个变量,所以可以左值或者右值
由于时间原因,我先写这么多吧,晚上要是有时间再补一些代码,最后,欢迎指正我的不足啊。
- 关于指针,我想说
- 关于学业,我想说...
- 关于编程我想说
- 关于编程我想说
- 关于学历我想说这些
- 关于适配,我想说。。。
- 关于网瘾,我想说
- 关于技术博客我想说
- 关于代码规范我想说这些。
- 我想说
- 我想说
- 关于我,关于ios,关于自学,我想说。。。。
- 关于创业,我想说“资金+人员结构+思想”
- [springmvc+mybatis][关于这两个框架的学习,我想说]
- 关于Android开发求职,我想说有点尿性。
- 我想说却说不出来
- ?我想说什么呢?
- 开始,我想说的话
- evenbus的简单使用方法
- kubernetes-dashboard
- getDeclaredMethod和getMethod的区别
- mariadb事务级别
- VMware虚拟机运行时报The CPU has been disabled by the guest operating system错误的解决方法
- 关于指针,我想说
- 洛谷P2871 [USACO07DEC]手链Charm Bracelet
- 极简keras:实现神经网络风格迁移(neural style)
- RecyclerView LinearLayout 显示图片
- Leetcode 59. Spiral Matrix II
- day13正则表达式 Collection集合
- python操作符 is,== 详解 (Trust Me)
- Dijkstra算法(一个节点到其他所有节点的最短路径)
- 从零开始前端学习[47]:如何使用javascript来操作行内样式或者属性浅析