指针简述

  1. 间接访问:通过内存单元编号((地址),以及数据所占字节数访问内存中的数据.
  2. 主要内容:指针变量指针与数组,指针与字符串
  3. 数据的存储:
  4. 其中字节是最小的存储单元,一个字节称为一个存储单元(内存单元),不同数据类型所占的存储空间不等
  5. 为了正确的访问内存单元,每个内存单元都有一个编号.内存单元的编号称为地址
  6. 内存单元的数据是今天得重点内容
  7. 访问方式:
  8. 直接访问和间接访问
  9. 直接访问:
  10. 直接访问内存空间的内容 例如 :a = 20;b = 2 * a;
  11. 间接访问:
  12. 通过内存单元编号以及数据所占字节数访问内存中的数据
  13. 间接访问在程序中随处可见,指针是间接访问的常用方式.
  14. 1.指针:
  15. 指针是内存中的数据的内存编号
  16. 程序中的每个数据都有地址
  17. 通过&符号取变量的地址,例如:a = 20; printf(“%p”, &a);//打印内存地址
  18. 指针变量
  19. 指针变量是C语言中存放内存编号的量.
  20. 指针变量的定义:
  21. int *p =NULL;//NULL恒等于0
  22. 与普通变量不同的是.定义指针变量的时候.前面需要加*
  23. 指针变量的类型修饰符表示:该指针变量保存的指针对应的存储区域是一个整形(或者其他类型)的存储区域.这里指针变量有别于普通变量所以变量名前加一个*来区分
  24. 使用*操作符,访问内存编号里面对应的内容
  25. int a = 5;
  26. int *p = NULL;
  27. p = &a;
  28. printf(“%d”, *p);
  29. 指针变量是存放数组的变量
  30. *和&配套使用
  31. *是取值运算符,可以通过*+变量名的形式访问指针变量存储的指针对应的存储空间的内容
  32. &p 指针p本身的地址
  33. 指针的重指向
  34. int a = 3, b = 5;
  35. int *p = &a;
  36. p = &b;
  37. *p = 5;
  38. //指针变量的赋值意味着重指向
  39. 指针变量的重指向,本身就是对指针变量做重新赋值的操作,因为指针变量并不脱离变量的范畴,在程序序运行期间可以对一个已经定义的指针变量做重新赋值,让它保存另一个存储空间的地址,这时候之前所做保存的地址就会被覆盖掉
  40. 2.指针的类型
  41. 指针变量是存放内存地址的变量
  42. 因为内存地址只跟操作系统有关,所以指针变量所占的内存大小取决于操作系统位数(32位系统指针占四个字节)
  43. 不同类型的指针区别:主要作用 指针自增运算,指针移动字节数多少,以及用*取值时,取多少字节数据.
  44. 注意事项:
  45. int *p = NULL;此时的*只起到修饰的作用,告诉编译器,p是个指针.
  46. 数组
  47. 在C语言中,数组是构造类型,系统会分配一段连续空间来存储数组的全部数据,数组名代表数组元素的首地址(第一个元素的内存地址)
  48. 3.指针与数组
  49. .指针可以当数组名使用
  50. p[1] = 3;
  51. 恒等于 a[1];
  52. 恒等于*(p + 1);
  53. 恒等于*(a + 1);
  54. (1)所占空间不同
  55. 指针所占空间至于操作系统位数有关
  56. 数组所占空间与元素个数有关,数据类型有关
  57. (2)数组名是常量地址
  58. 数组名不能重指向(不能赋值)
  59. 指针可以重定向
  60. 4.指针与字符串
  61. C语言用字符数组保存字符串;
  62. 指针数组
  63. 存放指针的数组称为指针数组.
  64. 注意可以通过指针来修改字符数组,但不可以修改常量字符串.<span style="font-size:18px;">
  65. </span></span></h2>
时间: 2025-01-14 19:33:36

指针简述的相关文章

【C++】智能指针简述(六):智能指针总结及补充

本文我们主要来总结一下前文介绍过的智能指针相关原理及实现,顺便补充一下前文未提到的shared_ptr删除器部分的内容. 总结: 1.智能指针,通过RAII机制,构造对象时完成资源的初始化,析构对象时,对资源进行清理和汕尾. 2.auto_ptr,防止拷贝/赋值对象后,析构时多次delete对象导致程序崩溃,因此它通过"转移所有权",完成赋值/拷贝,保证只有一个对象维护.释放指针.实际开发中,并不常用. 3.scoped_ptr与auto_ptr类似,只是它不会"转移所有权&

iOS中SEL的使用及原理

一.了解SEL前的准备-----isa指针简述 1.一个类就像一个 C 结构,NSObject 声明了一个成员变量: isa.由于 NSObject 是所有类的根类,所以所有的对象都会有一个 isa 的成员变量,而该 isa 变量指向该对象的类(空间). 2.类在Objective-C中也是一个实体, 由于存在Objective-C 运行环境所有的类将有自己的存储空间.Objective-C 运行环境将为每个类分配空间.这里所说的 isa,正是指向这样一个类的空间, 从而建立类和对象之间的对应关

简述C指针

上大学学C的时候,老师讲到这个章节都会强调"指针"这个是难点,也很重要.工作以后,从事PLC程序设计.在一起调试生产线的同行看到我在Step7里用STL语言编写FB块,少不了采用指针作一些DB块或通信数据间的处理,便觉得我的技术好nb啊!PLC一般用梯形图(老外用FBD),他们便觉得新鲜了,nb了.其实,我不是为了装逼才去用这种类似汇编语言,而是混合编程,什么适合用什么,指针也是出于需要.况且作为C语言的基本编程素养和微机理论的基础知识,用汇编和指针是自然而然的事情.造成这种错觉的原因

附录一 再论指针和数组

附录一 附录一 再论指针和数组 再论指针和数组 [email protected]:Kevin-Dfg/[email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 预习检查 链表单元有哪几个部分组成 如何申请链表单元,及释放链表单元 实现单链表插入的基本语法 简述一下快速排序基本理论要点 [email protected]:Kevin-Dfg/[email protected]:Kevin-Dfg/Dat

DELPHI下API简述(1800个API)

DELPHI下API简述 http://zero.cnbct.org/show.asp?id=144 auxGetDevCaps API 获取附属设备容量 auxGetNumDevs API 返回附属设备数量 auxGetVolume API 获取当前卷设置 auxOutMessage API 向输出设备发送消息 auxSetVolume API 设置附属设备卷 AbortDoc API 终止一项打印作业 AbortPath API 终止或取消DC中的一切路径 AbortPrinter API

OC中self关键字简述

self关键字 简述 1. self可以用在对象方法和类方法中 2. self是个指针 3. 在对象方法使用self 1. self是一个指针, 在对象方法中指向当前对象——谁调用这个对象方法, 谁就是这个对象方法的当前对象 2. 作用: 可以使用self来显式的访问当前对象的成员 可以使用self关键字来显式的访问当前对象的属性 以前都是对象指针->属性 现在可以 self->属性 可以使用self来显式的调用当前对象的其他对象方法 3. 必用场景 如果方法中存在和属性名同名的局部变量, 这

结构化异常(SEH)简述

/********************************************************************* * Author  : Samson * Date    : 08/04/2014 * Test platform: *              Linux ubuntu 3.2.0-58-generic-pae *              GNU bash, version 4.2.39 * *****************************

《转》简述c语言的优缺点

C语言是1972年由美国的Dennis Ritchie设计发明的,到1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言.再到1970到80年代,C语言被广泛应用.这短短的几十年时间实现了C语言的高速发展.C语言为什么发展的如此迅速,这就要讲述C语言的优点:1.C语言简洁.紧凑,灵活性强(C语言仅40个关键字,9种控制语句,程序书写形式自由性强,把高级语言的基本结构和语句与低级语言的实用性结合起来.):2.运算符丰富(它包括了算术运算符.赋值运算符.关系运算符.逻辑运算符.条件运算

【C++】模板简述(三):类模板

上文简述了C++模板中的函数模板的格式.实例.形参.重载.特化及参数推演,本文主要介绍类模板. 一.类模板格式 类模板也是C++中模板的一种,其格式如下: template<class 形参名1, class 形参名2, ...class 形参名n> class 类名{ ... }; 例如:我个人模拟实现的Vector的声明 template<typename T> class Vector{ public: typedef T* Iterator; //迭代器 typedef c