指针为何被当作c语言的精髓(通俗理解指针是个啥东西)

指针是pointer的翻译,你可以理解为指示器。

你是哪里人?你要去哪里?去北楼三层05架04格第3层把《三体》这本书给我拿来。

由此可知,地址可以给你一个目标位置的指向。

内存的内存单元是一种线性存储结存,其序列号就是其地址的标识。数据存储在连续的内存单元中,一段连续内存单元的首地址可以命名为变量。 一段连续内存单元中可以存储基本数据类型的字面值,也可以存储指向某一段内存单元的地址值,前者是变量,后者因其特殊性,称为指针变量(指针变量在32位系统中,不管其指针一段多长的连续内存单元,其本身一般用4个字节来存储其地址值):

指针为何被当作c语言的精髓(通俗理解指针是个啥东西)(1)

这时,也可以理解指针对数据的访问是:你要找《三体》这本书,你先去北楼四层06架05格第4层,那里有一个指示牌会告诉你《三体》这本书在哪里,指示牌上标识了一个地址:北楼三层05架04格第3层。

变量是一段连续内存单元首地址的命名,指针变量也是如此。

一段连续的内存单元,需要读取多少内存单元?基本数据类型规定了内存单元字节的数量,指针变量的声明必须声明是指向什么类型的变量,由类型即可以确定其指向的内存单元的首地址及长度。

对于数组,由数组长度来确定需要读写内存单元的数量。

对于字符串,C语言的做法是就是读取连续内存单元,直到“\0”为止。

对于字符指针,如:

char* str = "abcdef";

其中就隐含了一个以“\0”结尾的字符。

对于文件,相对于内存来说,也是输入、输出的对象,可以理解为一个字符串,段落由非显示字符"\n\r"来标识,长度怎样确定呢,类似于字符串,也是定义一个结尾标志,EOF。

指针除了指向基本数据类型,也可以指向结构体变量、类类型对象,不管是结构体变量,还是类类型,其成员数据都是连续存储在一起,指针指向其首地址。

对于动态内存申请,其参数包括需要内存单元的数量,也是返回一个首地址,可以赋值给一个指针变量来使用。

什么是指针的指针呢?指针指向的内存单元中包含的值还是一个地址值,由这个地址值指向的内容才是实际数据值。(也就是由两个地址值来确定一个数据实际值)

对于链表,每一个节点都包含一个自身结构体类型的指针变量,用于指向下一个指针。头节点的首地址就是链表的名称,可以由指针变量指向它。对于单链表,第n个节点的地址往往由第n-1个节点(其前一个)的地址域来确定。如果pn是一个指针,next是节点的地址域,通常使用pn->next;来表示地址的偏移(移动到下一个结点)

-End-

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页