05 指针

合集下载

【C】Re05指针

【C】Re05指针

【C】Re05指针⼀、变量 & 指针变量 = 内存地址 + 存储值指针变量 = 内存地址 + 存储值【变量的内存地址】作⽤:间接访问内存地址内存地址 = 地址编号地址编号:内存中的每个字节唯⼀的编号,从0开始记录,使⽤⼗六进制显⽰可以使⽤指针变量存储变量的地址不同数据类型就有对应的指针的数据类型⼆、使⽤#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>void pointer () {// 指针变量int * pointer;// 变量int varA = 100;printf("pointer -> x16 %x, x10 %d, x8 %o\n", pointer, pointer, pointer);printf("varA -> %d\n", varA);printf("- - - - - - - - - - - - - - -\n");// 把varA的地址赋值给指针变量pointerpointer = &varA;// 通过指针变量pointer取地址访问varA变量*pointer = 20;printf("pointer -> x16 %x, x10 %d, x8 %o\n", pointer, pointer, pointer);printf("varA -> %d\n", varA);}int main() {pointer();return EXIT_SUCCESS;}输出格式注意:// %p显⽰完整⼗六进制位数, %x只显⽰进制数语法递进:int tf = (*pointer == *&varA); // 0 false, 1 trueint tf2 = (pointer == &varA);int tf3 = (*pointer == varA);printf(" %d\n",tf);printf(" %d\n",tf2);printf(" %d\n",tf3);三、空指针& 野指针空指针定义void nullPointerAndWildPointer () {// 定义⼀个空指针int * nullPointer = NULL;}指向的NULL常量来⾃于STDLIB标准库头⽂件的这⼀段#else#define NULL ((void *)0)#endif#endif最后指向的还是⼀个0⽽已void nullPointerAndWildPointer () {// 定义⼀个空指针int * nullPointer = 0;}实际上不建议直接写0,容易混淆指针变量与变量空指针不能被访问到:void nullPointerAndWildPointer () {// 定义⼀个空指针int * nullPointer = NULL;printf("nullPointer -> %p", *nullPointer);}int main() {nullPointerAndWildPointer();return EXIT_SUCCESS;}因为内存地址编号0 - 255已经被操作系统占⽤了空指针的作⽤:不知道应该对指针定义多少合适时使⽤野指针定义:void nullPointerAndWildPointer () {int * wildPointer = 0xffff;printf("wildPointer -> %p\n", *wildPointer);}指针变量存储了⾮法的、未知的⼀个内存地址,该地址存储的内容将⽆法访问但是允许查看地址void nullPointerAndWildPointer () {// 定义⼀个空指针// int * nullPointer = NULL;// printf("nullPointer -> %p\n", *nullPointer);// 定义⼀个野指针// int * wildPointer = 0xffff;// printf("wildPointer -> %p\n", *wildPointer);int * nullPointer = NULL;printf("nullPointer -> %p\n", nullPointer);int * wildPointer = 0xffff;printf("wildPointer -> %p\n", wildPointer);}int main() {nullPointerAndWildPointer();return EXIT_SUCCESS;}野指针的第⼆种情况:也是⼀样,地址可以访问,但是内部存储的值⽆法访问// 野指针的第⼆种情况int * wildPointer2;printf("wildPointer2 -> %p\n", wildPointer2);// printf("wildPointer2 value -> %d\n", *wildPointer2);四、⽆类型指针和万能指针1、Void类型概述void voidUsage() {// void 是⼀个数据类型,所以也具备对于的指针类型 void *// void 的⽤途是修饰函数返回类型和形参类型}// 形参修饰了void 表⽰该函数不需要参数void noNeedParam( void ) {}2、函数返回类型省略当函数的返回值类型声明的是void时,我们可以省略,不需要return不过不建议这样书写,C++并不⽀持这样的语法aaa () {printf("void返回类型省略的函数调⽤");}int main() {aaa();return EXIT_SUCCESS;}如果函数不需要注⼊任何类型的参数,编写时是可以明确标注void 数据类型即可3、⽆类型指针与万能指针:⽆类型指针可以强转任意类型接收对于的类型的变量地址void noTypePointer() {void * p = NULL;printf("sizeof p = %d\n", sizeof(p)); // 64位 sizeof p = 8 32位 sizeof p = 4int num = 10;p = &num;// printf("p = %d\n", *p); int指针类型赋值给void指针类型,类型不匹配错误// 使⽤强转来转换指针类型printf("p = %d\n", *(int *)p);}另外可以作为万能指针使⽤:void anyTypePointer() {void * pointer = NULL;int * varA = NULL;char * varB = NULL;// ⼀个是int指针类型⼀个是char指针类型,直接这样赋值不会有语法错误提⽰// 但是在编译执⾏时会有警告提⽰,另外,如果指针调⽤了就会报错。

指针虚无针意针意念针专论

指针虚无针意针意念针专论

指针虚无针意针意念针专论指针虚无针意针意念针专论2010年03月05日星期五1923摘要指针就是以手指代针。

意针即是以意念代针的神奇治病方法。

西方哲学现代科学是难以值信的。

关键是东西方文化对人体大脑的认识根本不同。

西方重视的是死人的大脑解剖研究。

东方重视的活人的功能态研究。

西方研究论定人的大脑不可能有精神能量。

《黄帝内经》则认为大脑是元神之府潜藏有极其巨大能量。

并有直接开发应用的针灸技术。

指针意针仅是大脑元神开发出的能量表现的一种表现。

人的大脑元神是世人完全未认识的中医医学精髓。

等待中医自己去挖掘、继承、整理和提高。

关键词指针虚元针意针意念针。

1、指针、意针针法简介《黄帝内经》中医界普遍认为是中医药学的伟大宝库。

但是作者深入研究之后发现。

《黄帝内经》的精髓和中医科学核心并不是中医药物。

而是大脑元神之府、精神意表活动产生的巨大精神能量开发和应用大课题是一门极其博大精深的大学问。

核心是道家学说构建成的《黄帝内经》道家养生学。

指针意针就是大脑元神之府的精神转化为能量力的一种表现形式是当今现代哲学、现代科学、中医界也不知其奥妙的神奇针法。

《灵枢、膈上》记载恬淡无为乃能行气。

便是说的指针虚无针。

《素问·九针十二原》记载迎之随之以意和之。

讲的便是意念针。

《灵枢、官能》记载理气血而调诸顺逆察阴阳而兼诸方缓节筋柔而心调和者可使导引行气。

便是谈的掌握心意快速进入恬谈虚无的人可以学习导引行气技术。

其实便是指有指针意针的特殊功能的导引行气医师。

《黄帝内经》作者特别高度评价导引行气医师掌握的神奇针法说歧伯曰妙乎哉问也此刺之大约针之极也神明之类也口说书卷犹不能及也。

意思是说歧伯说问得妙极了这是针刺的大法极高超的针刺技术。

这种神妙的针法只能心理神会。

很难用口说清或用文章阐明。

2、明代针炙专家杨继州曾掌握指针绝技。

《黄帝内经》问世以来中国医学史上只有明代著名针炙专家杨继州曾掌握过指针绝技。

《针炙大成》杨氏医案记载着此事。

哈工大苏小红版C语言课件cha

哈工大苏小红版C语言课件cha

C语言的特点和应用领域
系统软件
嵌入式系统
操作系统、编译器等核心软件都是用 C语言编写的。
在嵌入式系统中,C语言被广泛应用 于开发底层驱动程序和操作系统内核。
应用软件
数据库、游戏、图形界面等应用软件 也广泛使用C语言开发。
C语言的基本语法结构
数据类型
运算符
控制结构
包括整型、浮点型、字 符型、数组类型、结构
短整型通常占用2个字节,整型 占用4个字节,长整型占用8个 字节。
浮点型数据类型
浮点型数据类型用于 存储小数,包括单精 度浮点数和双精度浮 点数。
浮点型数据类型用于 存储实数,包括正实 数、负实数和零。
单精度浮点数通常用 float表示,双精度浮 点数通常用double 表示。
字符型数据类型
01
05 指针和内存管理
指针的定义和使用
01
02
03
04
指针是变量,用于存储 内存地址。
指针变量必须先定义后 使用。
使用指针前需要先赋值。
指针可以指向同类型的 变量或数组元素。
内存管理的基本概念
01
02
03
04
内存分为堆区和栈区。
堆区用于动态内存分配,由程 序员管理。
栈区用于存储局部变量,由系 统自动管理。
内存管理涉及内存的申请、使 用和释放。
动态内存分配和释放
使用`malloc()`函数在堆区分配内存。
使用`realloc()`函数调整已分配内存 的大小。
使用`calloc()`函数在堆区分配并初始 化内存。
使用`free()`函数释放已分配的内存。
06 文件操作
文件的打开和关闭
要点一
打开文件

指针要点.

指针要点.

指针要点(重点,与数组、结构体结合起来综合考查)地址:内存区的每一个字节有一个编号,这就是“地址”。

注意:内存单元的地址与内存单元的内容是两个概念。

指针变量:专门用来存放地址的变量。

&和*优先级相同,但按自右而左方向结合。

1、指针变量的定义与赋值指针变量只能指向相同类型的变量例:int a,*p; float b;则 p=&a;正确 p=&b 错误2、指针指向字符串指向方法char *p=“string”;表示指针变量p指向字符串开头有关运算(与指向一维数组的运算相同)p++表示指针指向下一个字符*p++表示先得到字符s,然后指针再向下移动例:(05春选择题26)D正确。

选项C.p="Hello";p不再指向数组a,不能对数组a赋值,但可以*p='H';赋给a[0]。

*(p+1)='e';……用循环逐个元素赋值。

例:char x[10];scanf("%s",x);是正确的但char *p;scanf("%s",p);是错误的,p的值未定,键盘输入的字符串会放在已有指令或数据的存储区,很危险,可能破坏程序或数据。

改为:char x[10],*p=x;scanf("%s",p);正确,p有了确定的值,键盘输入的字符串会放在该地址起始的存储单元。

3、指针指向一维数组例: int a[10],*p;则 p=a; p=&a[0] ;p=a[i];正确 p=&a 错误注意:p++ *p++ *(p++) (*p)++的区别,若有inta[10,*p=a;则 p++表示p指向元素a[1]*p++表示先得到p指向元素a[0]的值,然后p指向下一元素a[1] *(p++)与*p++意义相同(*p)++表示p所指向的元素a[0]的值自加1,p仍然指向a[0]例:int i; float a[6]={6,8,0,5,7,9};float *p=a;等价于什么?改为:int *p=a;对不对?printf(“%f”, (*p)++);输出什么?printf(“%f”,*(p++)); *(p++)与*(p+1)是否同printf(“%f”,*(p+4));(*p)++ 先输出a[0],再将a[0]加1,指针不变*p++ 先输出a[0],指针指向a[1]*(p+4) 输出a[5] ,指针不变*p++等价于*(p++) 指针移动p=p+1;赋值不等价于*(p+1) 指针不动不赋值例:1、怎样引用a[i]的值?2、如果p当前指向a[0] p+3, a+3都等效于什么?引用a[i]的值:a[i], *(p+i), *(a+i)如果p当前指向a[0]p+3, a+3都等效于&a[3]•一个指针所占的字节数是2B,下面定义的含义:int *p[20];int (*p)[20];int *p();int (*p)();int **p;int *p[20];定义20个数组元素的指针数组,p是指向指针的指针。

机械摆钟(2023版ppt)

机械摆钟(2023版ppt)

机遇:随着科技的发展, 机械摆钟可以融入更多 的科技元素,提高产品 的附加值
机遇:随着环保意识的 提高,机械摆钟可以采 用环保材料和工艺,提 高产品的环保性能
未来发展趋势
1
智能化:机械摆 钟将融入更多智 能功能,如语音 控制、远程操作 等
2
环保化:机械摆 钟将采用环保材 料和节能设计, 降低对环境的影 响
计时功能
01 02 03 04
01
机械摆钟的核心功能是计时,可 以精确到秒
02
机械摆钟的计时精度高,不受外 界环境影响
03
机械摆钟的计时稳定性好,可以 长时间保持准确
04
机械摆钟的计时功能可以应用于各 种场合,如家庭、办公室、学校等
艺术价值
机械摆钟的设 计:精美的外 观设计,具有 艺术美感
工艺价值:精 湛的工艺,体 切割材料:根 据图纸切割所 需的金属材料
04
调整摆钟:调 整摆钟的走时 精度和稳定性
06
包装运输:将 制作好的摆钟 进行包装和运 输
材料选择
01
钟壳材料:金属、 塑料、玻璃等
04
指针材料:金属、 塑料、橡胶等
02
钟摆材料:金属、 塑料、橡胶等
05
发条材料:金属、 塑料、橡胶等
03
齿轮材料:金属、 塑料、橡胶等
5
机械摆钟的现状与未来
当前市场状况
01
机械摆钟 市场逐渐 萎缩,被 电子钟表 取代
02
机械摆钟 主要面向 高端市场, 价格昂贵
03
机械摆钟 收藏价值 高,受到 部分消费 者的喜爱
04
机械摆钟 的创新设 计,吸引 了部分年 轻消费者
面临的挑战与机遇
挑战:市场竞争激烈, 需要不断创新和改进

cobol pointer用法

cobol pointer用法

COBOL指针用法什么是COBOL指针?COBOL(Common Business-Oriented Language)是一种用于商业应用程序开发的编程语言。

COBOL指针是COBOL语言中的一种特殊数据类型,用于存储和操作内存地址。

在COBOL中,指针允许程序员直接访问和操作内存中的数据,而不是通过变量名来引用数据。

指针可以指向其他变量、数据结构或程序段,使得程序具有更高的灵活性和效率。

COBOL指针的声明和初始化在COBOL中,可以使用POINTER关键字来声明指针变量。

指针变量必须在WORKING-STORAGE SECTION或LINKAGE SECTION中声明。

以下是一个COBOL指针的声明和初始化的示例:WORKING-STORAGE SECTION.01 MY-POINTER POINTER.05 POINTER-VALUE USAGE IS POINTER.在上面的示例中,我们声明了一个名为MY-POINTER的指针变量,并使用POINTER-VALUE作为其实际存储地址的字段。

要初始化指针变量,可以使用SET语句将一个有效的地址赋给指针变量,如下所示:SET ADDRESS OF MY-DATA TO MY-POINTER上述代码将MY-DATA的地址赋给了MY-POINTER指针变量。

COBOL指针的使用COBOL指针可以用于多种情况,包括:1. 动态内存分配COBOL指针可以用于动态内存分配,允许程序在运行时根据需要分配和释放内存。

这对于处理可变长度的数据非常有用。

以下是一个使用COBOL指针进行动态内存分配的示例:WORKING-STORAGE SECTION.01 DYNAMIC-DATA POINTER.05 DATA-LENGTH PIC S9(4) COMP.05 DATA-ADDRESS USAGE IS POINTER.PROCEDURE DIVISION.MOVE 100 TO DATA-LENGTHSET ADDRESS OF DYNAMIC-DATA TO DATA-ADDRESSCALL "CBL_MALLOC" USING DATA-LENGTHDISPLAY "Allocated memory address: " DATA-ADDRESS.在上面的示例中,我们使用CBL_MALLOC函数分配了一个长度为100的动态内存,并将其地址存储在DYNAMIC-DATA指针变量中。

高考物理电表读数估读标准规则

高考物理电表读数估读标准规则

高考物理电表读数估读标准规则估读的原则是:将最小刻度的下一位数进行估读。

如:最小刻度0.5,指针指到0.5,估读是0.50(记住要用“0”占位),如果指针在0.5与0.6之间约一半处,估读0.55,或者0.54、0.56都算正确。

补充回答:改错:上面回答把“如:最小刻度0.5”改为“最小刻度0.1”,抱歉。

增加回答:如果最小刻度0.5,指针指到0.5和1的中间,估读为0.7或0.8都正确,读0.75就不对了,因为0.7中的“7”已经是估读的了,不要再继续估读。

多用电表如何读数1、要正确选取电表的档位,测电流选电流档位,测电压选电压档位,测电阻选电阻档位。

2、指针式电表V表示电压的读数,A表示电流读数,Ω表示电阻读数3、数字式电表只要选对档位就可以估读的原则是:将最小刻度的下一位数进行估读。

如:最小刻度0.1,指针指到0.1,估读是0.10(记住要用“0”占位),如果指针在0.5与0.6之间约一半处,估读0.55,或者0.54、0.56都算正确。

如果最小刻度0.5,指针指到0.5和1的中间,估读为0.7或0.8都正确,读0.75就不对了,因为0.7中的“7”已经是估读的了,不要再继续估读。

由于中学实验用的教学电流表、电压表等做工都很粗糙,而且最小刻度0.2的居多,做实验时,为了尽量减少误差,是在读了0.1后又跟了一位估计数,不然算出来的误差太大。

电压表和电流表一般都有两个量程,首先就要看清除量程,搞清楚一个小格代表多大电流或电压。

任何一个测量仪器都存在估读的问题,比如指针指在4.3和4.4之间,如果大概在中间,就读4.35,如果偏了一点就读4.36或4.34之类的,如果刚好指在刻度线上,别忘了在后面加个零,比如4.30或4.40。

继续追问:我的资料上有一个关于电流表和电压表的分度不同会影响估读的说法请问是怎么回事?补充回答:的确如此啊,比如两个电压表,一个电压表一小格代表0.1V另一个一小格代表0.2V,显然前者精度高,比如第一个指在4.1和4.2的中间,就读作4.15,但是第二个只会在4.0和4.2之间,物理多用电表,读数是怎样估读的???欧姆表不用估读,其他的是1分度就后一位估读。

MF指针式万用表的使用

MF指针式万用表的使用

正确放置万用表: 将万用表放置在 稳定的工作台上, 避免振动和干扰。
校准零位:在使 用前,检查万用 表的零位是否准 确,如果不准确, 需要进行校准。
避免热电势影响: 在测量电阻时, 要避免热电势的 影响,可以通过 将万用表与被测 电阻之间的连线 尽可能短来减少 热电势的影响。
如何延长万用表的使用寿命
工作原理:通过测量电路中的电学 参数,利用指针的偏转来显示测量 结果
特点:操作简单、价格实惠、测量 精度高
指针式万用表的测量原理
电流测量原理: 通过测量电路 中的电流来检 测电阻、电压
等参数
电压测量原理: 通过测量电路 中的电压来检 测电阻、电流
等参数
电阻测量原理: 通过测量电路 中的电阻来检 测电流、电压
存放:万用表不使 用时应存放在干燥 、无尘、无振动的 环境中,避免阳光 直射或高温环境。
万用表故障的排查与处理
指针不归零:调整机械调零螺丝
测量电压不准:检查测量电阻的线 路和测量电阻的连接是否正确
添加标题
添加标题
添加标题
添加标题
测量电阻误差大:更换电池或检查 电池座
测量电流不准:检查测量电流的线 路和测量电流的连接是否正确
Part Five
MF指针式万用表 的使用技巧
如何正确选择量程
根据测量需求选择 合适的量程
避免超量程使用, 以免损坏仪表
在不确定测量值范 围时,选择较大的 量程进行初步测量
注意量程单位的转 换,避免误读
如何正确读数
指针式万用表读数时应先观察指针 是否在零位,若不在零位则应先调 节指针归零。
读数时应保持视线与表盘垂直,避 免视线角度偏差导致读数不准确。
测量电压的步骤和方法
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

14
七、new和delete int x, *ptr = new int(5);
new运算符 形式: x=*ptr;

指针=new 数据类型;
指针=new 数据类型(初值);
指针=new 数据类型[数组长度]; delete运算符 用于释放用new申请的动态存储空间.
delete 指针;
delete [ ]指针; 无需指明数组长度
10
四、指针变量的引用

&:取地址运算符。返回操作数的地址。 ☆ 如:y = &x 表示把变量x的地址赋值给y。

* :指针运算符。与&相反,返回该地址中变量的值。 ☆ 如:若y包含了变量x的内存地址,则z=*y表示将x的 值赋给z,即 z 接受了在y指向的存储单元中的值。 (&、* 互为逆运算符)
29
• 若二维数组y有m列,则在y[i][j]前的元 素个数为( B ) • A. j*m+i • B. i*m+j • C. i*m+j-1 • D. i*m+j+1
4
例: #include <iostream> 假设: using namespace std; intval 的地址为2000; int main() dVal的地址为2004; { intArray为2012; int intVal = 1; double dVal=2.0; int intArray[3] = {0,1,2}; cout<<&intVal <<„:‟<<intVal<<endl; cout<<&dVal<<„:‟<<dVal<<endl; cout<<intArray<<„:‟<<endl; cout<<&intArray[0]<<„:‟<<intArray[0]<<endl; return 0; }
28
• 对两个数组a和b进行如下初始化: char a[ ]=“ABCDEF”; char b[ ]={„A‟, „B‟, „C‟, „D‟, „E‟, „F‟}; 则以下叙述正确的是( C )。 • A. a与b完全相同 • B. a与b长度相同 • C. a比b长度长 • D. 对a的初始化方式是错误的
7)使用动态分配机制可使程序在运行时根据具体情况灵活调
整存储分配情况,通过指针、运算符new和delete实现。
24
编程提示:
1)指针可以指向任意类型的内存块,灵活方便,但也很 危险,容易出错,需小心使用;
2)使用动态存储分配时,动态内存的申请和释放必须配 对,以防止内存泄露; 3)指针要及时初始化,以防止它指向未知或未初始化的 内存块造成运行错误;
5
二、指针变量的概念
内存用户数据区
指针:内存地址,用于间接 访问内存单元 指针变量:用于存放地址 的变量 声明 int i; int *i_pointer=&i; 例: i=3; 引用
i_pointer *i_pointer 3 2000 i
6
2000 2004 3010
3 6
变量 i 变量 j
变量 i_pointer
*i_pointer=3;
2000
例:源程序
main() { int a,b; int *pointer_1,*pointer_2; a=100; b=10; pointer_1=&a; pointer_2=&b; cout<<a<<‘ ‘<<b<<endl; cout<<*pointer_1<<‘ ‘<<*pointer_2<<endl; } 程序运行结果: 100,10 100,10
13
自增(++)和自减(--)
p++、 ++p、 p--、 --p
*p++ *(p++) *p (*p)++ *p (*p)++
示例演示==》
p++
指针相减
int *p1, *p2; 假设p1指向1000,p2指向1008, 则p2-p1的值为: (1008-1000)/sizeof(int)=2
15
例:用动态数组解求Fibonacci数列的前n项。
#include <iostream> using namespace std; int main() { int n; cout <<“Please input n=?”; cin>>n; int *p=new int[n+1]; //为数组分配空间 if(p==0||n<0) { cout <<“Error”<<endl; return -1; }
16
p[0]=0; p[1]=1; cout<<p[0]<<endl; cout<<p[1]<<endl; for(int i=2; i<=n;i++) { p[i]=p[i-2]+p[i-1]; cout<<p[i]<<endl; } delete[] p; //释放数组空间 return 0; }
7
[例2]
输出: 先大后小
#include <iostream> using namespace std; main() { int *p1,*p2,*p,a,b; cout<<"请输入两个整数(a, b):"<<endl; cin>>a>>b; p1=&a; p2=&b; if (a<b) { p=p1; p1=p2; p2=p; } cout<<a<<b<<endl; cout<<*p1<<*p2<<endl; }
cout<<*p++; //输出30 cout<<*p; //输出40
cout<<(*p)++; //输出30 cout<<*p; //输出31
22
应用实例:
例1:将字符串反序输出:{“abcdef”}
#include <iostream> using namespace std; int main() { char str[] = “abcdef”; char *p = &str[5]; //指针指向str数组的第5个元素 while(p>=str) //当指针没有离开数组范围时,循环 { cout<<*p; //输出一个由p指向的字 p--; //指针向前移动一个位置 符; } return 0; } 23
第六章 指针
数据在内存中的地址 指针变量的概念 指针变量的初始化 指针变量的赋值运算 指针变量的算术运算
new和delete
指针和数组
1
指针与C语言
指针是C语言的精华,指针的灵活运用: •能有效地表示复杂的数据结构; •能动态分配内存; •能方便地使用字符串; •方便地使用数组; •在调用函数时能得到多于1个的值; •能直接处理内存地址等。
指针变量=地址
向指针变量赋值须是地址常量或变量,不能 是普通整数。但可赋值为整数0,表示空指针。 指针的类型是它所指向变量的类型,不是指 针本身数据值的类型,任何一个指针本身的 数据值都是unsigned long型。 地址中存放的数据类型与指针类型须相符。 允许声明指向 void 类型的指针。该指针可 以被赋予任何类型对象的地址。
小结:
1)地址是存放信息数据的内存单元的编号; 2)程序中定义的任何变量、数组或函数等,在编译时都会在 内存中分配一个确定的地址单元; 3)指针是C++语言中的一种数据类型,用来专门处理地址; 4)用来存放地址的变量叫指针变量。定义指针变量是通过定
义该指针所指向的变量类型来进行,其格式为:
数据类型 * 指针变量名表; 5)指针在定以后必须初始化才能使用;否则,结果不确定。 6)任何能由数组下标完成的操作都可由指针来实现,用指针 处理数组及元素是最快捷的方式;
说明: 如果已执行了"pointer_1=&a;"语句,则 &*pointer_1 与&a相同,表示变量a的地址; 如果已执行了"pointer_1=&a;"语句,则 *&a与 *pointer_1相同,等价于变量a; (*pointer_1)++相当于a++。

11
五、指针变量的赋值运算
19
p = a; for(i = 0; i<10; i++) cin >>a[i]; cin >>p[i]; cin >>*(a+i); cin >>*(p+i); cin >>*(p++); cin >>*p++;
p = a; for (i = 0; i<10; i++,p++) cin>>*p;
4)使用指针对数据进行运算时,要注意不要超出数组边 界,否则会导致逻辑错误; 5)尽管数组名是一个指向数组首地址的指针,但因为它 是常量指针,所以不能和一般指针一样在算术表达式中修 改其值。 25
相关文档
最新文档