好词好句 > 指针

指针

指针

指针

指针

在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为"指针"。意思是通过它能找到以它为地址的内存单元。 在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。

在信息工程中指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存器(Register)【用来指向该内存地址所对应的变量或数组】。指针一般出现在比较接近机器语言的语言,如汇编语言或C语言。面向对象的语言如Java一般避免用指针。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的函数的值。

另外,指针也指钟表中用来指示对应时间的部件。

在日常生活中指针是仪器或钟表上的,用来指示测量的数据的装置。在信息工程中指针是一个用来指示一个内存地址的计算机语言变量中央处理器(CPU)中寄存器

指针的基本手法可分为揉、扪、切、捏、点5种。

揉法:是用手指的尖端,轻按选下的穴位,作环形平揉的一种方法。揉动时手指的尖端不能离开所接触的皮肤,手指连同皮肤及皮下组织,以穴位为中心,作一小圆形转动,不要使手指与皮肤呈摩擦状态。每次揉一小圆周为1次,每穴位一般以120~180次为标准,约2~3分钟。次数的多少亦可视病情的轻重而定。常用拇拽和中指作揉法。本法在指针中应用较广。施术时需要根据病人质强弱和病情轻重施以轻重不同的指力。本法可与扪法配合应用。

扪法:是用手指扪按腧穴或身体一定部位的手法。将手指端深深按压皮肤及皮下组织深部,同时根据病人体质强弱,施以轻重不同的指力,以感到酸麻胀痛为止。当指端按入时,应逐渐减轻指力,最后停止。每穴一般扪按3分钟左右。扪法又分为单指法和双指法2种。

(1)单指法:一般用拇指或中指指端按压在穴位上。此法常用于胸腹部和四肢部的穴位,如气海CV (RN)6 ,中脘CV (RN)12,曲池LI11 、足三里ST36等(见图)

(2)双指法:即两手指同时扪按两个穴位。此法常用于头面、颈项、腹部、背腹部的穴位,如风池GB20 、阳白GB14 、天枢ST25 等穴位。(见图)

切法:用拇指指甲切按腧穴。操作时可用脱脂棉少许,覆于指甲 ,防止切伤皮肤。指切时用力需要轻而缓慢,特别是压痛处更应注意,尽量避免切处剧烈疼痛。本法多用于狭窄部位的穴位,如人中GV (DU)26 、迎香LI20 、少商LU11 等(见图)。

捏法:是用两个手指对称捏压穴位的手法,可用拇、食二指,也可用拇、中二指或拇指与其它各指,在上下方或左右方对称相向用力。可捏压一个或两个穴位上。如果捏压一个穴位,拇指在这个穴位上,另一指或其它各指则在对称地方,此法常用于四肢、肩颈部等部位的穴位,如合谷LI4 、曲池LI11 、足三里ST36 、三阴交SP6 等(见图)。

点法:是一指或二、三指点在痛点或穴位上,先轻后重。逐渐深透。本法常用于肩部、背部、臀部和大腿等部位的穴位。

在信息工程中指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存器(Register)。指针一般出现在比较近机器语言的语言,如汇编语言或C语言。面向对象的语言如Java一般避免用指针。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数的值。

大家都认为,c语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵魂,一点都不为过。同时,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针。basic不支持指针,在此不论。其实,pascal语言本身也是支持指针的。从最初的pascal发展至今的object pascal,可以说在指针运用上,丝毫不会逊色于c语言的指针。

计算机中的内存都是编址的,就像你家的地址一样。在程序编译或者运行的时候,系统(可以不关心具体是什么,可能是编译器,也可能是操作系统)开辟了一张表。每遇到一次声明语句(包括函数的传入参数的声明)都会开辟一个内存空间,并在表中增加一行纪录。记载着一些对应关系。(如图1所示)

----------------------------------------------------

Declaration | ID Name Address Length

----------------------------------------------------

int nP; | 1 nP 2000 2B

char myChar; | 2 myChar 2002 1B

int *myPointer; | 3 myPointer 2003 2B

char *myPointer2; | 4 myPointer2 2005 2B

----------------------------------------------------

指针,是一个无符号整数(unsigned int),它是一个以当前系统寻址范围为取值范围的整数。32位系统下寻址能力(地址空间)是4G-byte(0~2^32-1)二进制表示长度为32bit(也就是4B)。

int类型也正好如此取值。

例证就是程序1得到的答案和程序2的答案一致。(不同机器可能需要调整一下pT的取值。)

----------------------------------------------------

程序

#include <stdio.h>

main()

{

char *pT;

char t='h';

pT=&t;

putchar(*pT);

}

----------------------------------------------------

程序

#include <stdio.h>

main()

{

char *pT;

char t='h';

pT=(char *)1245048;

putchar(*pT);

}

----------------------------------------------------

加上(char *)是因为毕竟int 和char *不是一回事,需要强制转换,否则会有个警告。因为char *声明过的类型,一次访问1个sizeof(char)长度,double *声明过的类型,一次访问1个sizeof(double)长度。

在汇编里int 类型和指针就是一回事了。因为不论是整数还是指针,执行自增的时候,都是其值加一。如果上文声明char *pT;,汇编语言中pT自增之后值为1245049,可是C语言中pT++之后pT值为1245049。如果32 位系统中, s 上文声明int *pT;,汇编语言中pT 自增之后值为1245049,可是C 语言中pT++之后pT值为1245052。

为什么DOS下面的Turbo C,和Windows下VC的int类型不一样长。因为DOS是16位的,Windows是32位的,可以预见,在64位Windows 中编译,上文声明int *pT;,pT++之后pT值为1245056。

那么,复杂的结构怎么分配空间呢?C语言的结构体(汇编语言对应为Record类型)按顺序分配空间。(如图2所示)

----------------------------------------------------

int a[20];

----------------------------------------------------

typedef struct st

{

double val;

char c;

struct st *next;

} pst;

----------------------------------------------------

pst pT[10];

----------------------------------------------------

在32 位系统下,内存里面做如下分配(单位:H,16 进制);(如图3所示)

----------------------------------------------------

变量 2000 2001 2002 2003 2004 2005 2006 … 204C 204D 204E 204F

地址 a[0] a[1] … a[19]

----------------------------------------------------

变量 2050 2051 … 2057 2058 2059 205A 205B 205C 205D 205E 205F

地址 pst.val pst.c pst.next 无效 无效 无效

----------------------------------------------------

这就说明了为什么sizeof(pst)=16而不是8。编译器把结构体的大小规定为结构体成员中大小最大的那个类型的整数倍。

至于pT的存储,可以依例推得。总长为160,此不赘述。

有个问题,如果执行pT++,答案是什么?是自增16,还是160?别忘了,pT 是常量,不能加减。

所以,我们就可以声明:

----------------------------------------------------

typedef struct BinTree

{

int value;

struct BinTree *LeftChild;

struct BinTree *RightChild;

} BTree;

----------------------------------------------------

用一个整数,代表一棵树的结点。把它赋给某个结点的LeftChild/RightChild 值,就形成了上下级关系。只要无法找到一个路径,使得A->LC/RC->LC/RC...->LC/RC==A,这就构成了一棵二叉树。反之就成了图。

指针可以用来有效地表示复杂的数据结构,可以用于函数参数传递并达到更加灵活使用函数的目的.使C语言程序的设计具有灵活、实用、高效的特点。

指针不仅仅是C语言的灵魂,运用得好更是事半功倍,让你写出的程序更简洁!

一个专门用于图书搜索的网站,指针图书网。自称全球最大中文图书检索网站。

在日常生活中指针是仪器或钟表上的,可动的,一般狭长的,往往在一段尖的用来指示测量的数据的装置。

指针是以手指按压或爪切某些穴位,代替针刺治病的一种治疗方法,具有疏通经络、行气活血、调和脏腑功能、开窍醒神、止痛等作用。常用于突发性病症,如虚脱、中暑、癔病及多种痛症。亦可用于一些内伤外感杂病的治疗。

由于指针疗法不需要任何操作器械及穴位消毒,可以随时随地应用,因此可应用于多种急症的处理,如晕厥、剧烈疼痛等。又因指针疗法具有疼痛小的特点,因此广泛适用于年老体弱、儿童、惧怕针刺者及孕妇等。也可作为患者自我治疗及预防疾病的一种方法。

(1)施术者注意手的消毒,以免交叉感染;指甲宜常剪,以免切伤病人皮肤。

(2)指力的轻重以病人能耐受为宜。以免病人产生不适或晕针;对年老体弱者和儿童,施术时指力不可过重。

(3)指针的施术时间以1~3分钟为标准,亦可根据病情增减。

(4)急性传染病、皮肤病、肿瘤以及腹痛拒按的患者,不宜使用指针。

(5)小儿头部的囟门区和孕妇的合谷LI4 、三阴交SP6 以及腹部穴位等,不宜用指针。

(6)过饥、过饱、酒醉、劳累过度时,不宜用指针。

All rights reserved Powered by 好词好句 www.9512.net

copyright ©right 2010-2021。
好词好句内容来自网络,如有侵犯请联系客服。zhit325@126.com