该系列文章源于《深入理解C指针》的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教。

1、指针的类型:

可以在声明指针时,指定指针的类型,例如:

(1)void *x  声明一个无类型的指针,主要是在动态分配内容时,为了后期的指针转换方便,而常常使用

(2)int *ptrnum 声明一个int型的指针,一般情况下,一个指针变量自身占用4个字节,也就是32位,在64为系统下,是8个字节,也就是64位,但是随着指针的类型不同,实际的占用空间(字节)是不同的,byte型一个字节,short型两个字节,long型8个字节等等。

(3)指针指向的类型,只有知道指针指向的类型,才能明白指针在内存中的具体分布情况。特别是在指针的算术运算时,指针指向的类型决定要分配的内容的分布。

2、指针的值:

(1)指针与其他一般变量不同的是,一般变量名代表的地址上的16进制的值就是变量对应的值(ASCII码或UNICODE码),也可以是字面量等。

(2)而指针变量名对象的地址上的值依旧是个地址,想要获取内容,必须按照该地值继续寻找才能得到指针变量所指向的值。

(3)对指针变量ptrnum而言,须要使用*指针解析符来完成指针变量对应地址的上的值的引用

(4)其实,指针变量中的地址,只是变量的首字节地址,并不包括所有的地址

(5)指针变量可以指向变量、数组、结构体、函数、指针等内容,一般用到二级指针就够了

(6)指针的值是指指针指向的某块内存区域的首地址,指针的内存区域可以用使用sizeof关键字获取指针的内存区域的大小,是以字节为单位,如果想获取指针上指针类型的大小,须要使用sizeof(指针名称)/sizeof(指针类型)

3、指针的初始化:

(1)指针在声明是初始化:int *ptrnum = num;(假设num已经定义),这是使用变量初始化

(2)指针进行动态初始化:int *ptrnum = (int *)malloc(sizeof(int)); 使用malloc函数进行动态分配初始化

(3)对将要不用的指针设置: int *ptrnum = NULL;或 int *ptrnum = 0; 都是将指针释放前的操作

(4)野指针的出现:int *ptrnum; 只是声明指针,而不进行初始化出现野指针,野指针是内存泄漏的一种常见情况

最新文章

  1. Jquery获取select选中的文本与值
  2. idea使用心得(3)-重构初探
  3. 【代码笔记】iOS-点击加号增加书架,点击减号减少书架
  4. JavaScript的理解记录(1)
  5. 最短路径dijkstra算法
  6. Ajax学习资源大全[本来是转载的,但是现在我增加了很多]
  7. ArtJS(原创)
  8. 我是IT小小鸟,老师我之前上传了!!!!老是请您看到我
  9. HTTPS协议学习总结
  10. Linux下SSH免密码登录
  11. Eclipse调试Bug的七种常用技巧(转)
  12. Objective-C的hook方案(一): Method Swizzling
  13. [补档]happiness
  14. springmvc关于前台日期作为实体类对象参数类型转换错误
  15. redis主从配置+哨兵模式
  16. 2018-2019-2 网络对抗技术 20165323 Exp2 后门原理与实践
  17. CF520E Pluses everywhere
  18. 前后分离模型之封装 Api 调用
  19. np.repeat 与 np.tile
  20. CISSP一次通过指南(文末附福利)

热门文章

  1. CSS+JS实现流星雨动画
  2. PHP之基本目录操作
  3. du 与df 统计系统磁盘不一致原因与解决方法
  4. BFS:Nightmare(可返回路径)
  5. DFS:BZOJ1085-骑士精神
  6. Reachability from the Capital
  7. 子窗体与父窗体调用对方js方法
  8. RAID与LVM磁盘阵列技术
  9. python中pip 出错
  10. luogu3338 [ZJOI2014]力