关于C语言的指针(1):
指针变量与间接访问:
指针变量是与储存地址的储存单元绑定的变量,其的数值是储存单元的地址,间接访问过程是指通过指针变量的数值获取指针变量的值所指的储存单元的内容的过程,间接访问过程需要两次储存器访问操作:第一次是访问与指针变量绑定的储存单元获取指针变量的数值,之神变量的值是另一个储存单元的地址,第二次是一之神变量的十位地址,访问指针变量的数值所指向的储存单元,获取指针变量的值所指向的储存单元的内容。
指针的含义
在间接访问的过程中,仅仅根据地址变量P1绑定的储存单元的内容是无法实现间接访问的,因为与地址变量P1把规定的储存单元的内容只是储存单元地址,用于唯一识别存储器中的某个存储单元,而是实现间接访问,需要确定抵制标识的存储单元内容所表示的数据类型,只有确定地址标识的储存单元内容所表示的数据类型,蔡锷能确定表示该类型数据的二进制数的数位,并因此确定存储给类型数据所需要的存储空间单元数,同时确定该类型数据的二进制数表示方式,故需要确定一下信息:
- 存储该数据的一组存储单元的起始地址
- 存储该数据的存储单元数量
- 该数据的二进制表示方式
将实现间接访问过程所需要的信息组合成为指针,因此指针具有双重属性,即数值和类型。指针的数值是存储单元地址,用于确定存储数据的一组存储单元的起始地址。指针的类型用于确定储存在指针的数值所表示的储存单元中的数据的类型,并因此去欸的那个存储该类型的数据所需要的存储单元数量和改了剋型数据的二进制数表示方式,通过指针间接方位到的数据成为指针指向的数据。
指针变量
用于存储指针的变量成为指针变量,指针变量的数值是从年初单元的地址,指针变量的类型用于确定存储在指针变量的数值所表示的存储单元中的数据的类型,一般情况下,指针之恩那个付给与其相同的指针变量,指针变量的地址是于指针变量绑定的一组存储单元中第一个存储单元的地址。制定集成开发环境后,存储单元地址的二进制数位数是固定的,英雌各种类型的指针变量的长度是相同的,通过存储在指针变量中的指针间接访问到的数据成为指针变量指向的数据。
直接访问
通过对变量赋值可以直接将表示数据的二进制数字写入与变量绑定的存储单元各种,或者通过应用便亮度处于变量绑定的存储单元的内容,直接设置参数就可以赋值,参数对应的存储单元的内容就变为数值的二进制码,之后可以使用设定的参数名称就能调用其中的参数。
间接访问
间接访问以与指针变量绑定的存储单元的内容为地址对存储单元进行读写,如果与指针变量A绑定的存储单元内容是变量B的地址,就对指针变量A的间接访问过程就是对与变量B绑定的存储单元的读写。
间接访问的变量名称前面有*。
如果指针变量A的数值shibianliangB的地址,对指针变量A二间接访问过程等同于直接方位B的过程。
定义和应用方法
定义方法
指针变量的定义格式为:
类型 *指针变量名称;
类型用于确定指针变量之乡的储存单元各种数据的类型,*表示定义的是指针变量,指针变量名的取名规则类似于变量名的取名规则,
赋值方法和取运算地址符
已知GCC支持的C89标准中可以对指针变量赋值任何能够用32位二进制数表示的无符号数
若果不能直接用32位无符号数对指针变量赋值,一是由于多个程序同时存储在存储器中,导致程序执行错误。二是高级语言用变量应用和复制取代存储单元读写的目的就是是计算机存储器结构和存储器分配过程对高级语言程序设计是透明的,因此,在C语言程序设计中必须避免直接对用地至指定的存储单元进行读写,只能通过变量引用和赋值读写绑定的存储单元。
当计算机对变量分配存储单元,将与变量绑定的存储单元的地址作为便利啊属性,可以通过取地址运算符提取变量的地址属性。
而取址地址符为&,用于提取变量的地址属性,指针变量的类型需要与提取地址属性的变量的类型一直,就是int类型的变量提取的地址属性需要赋值给类型为int的指针变量。
应用方法
直接访问:
引用指针变量的值,或者对之阵壁那辆复制,指针变量的直接访问过程与整形变量、浮点型变量、等的直接访问过程相同,只是指针变量的值是地址,应用指针变量需要到地址,改地址是改变各变量绑定的存储单元的地址。
间接访问
间接访问是对一指针变量的数值为地址的储存单元进行的读写操作,入宫指针变量的值是于某个变量绑定过的的存储单元的地址,对该指针变量的间接访问过曾等同于对该变量的直接访问过程,当然调用之前需要完成定义。
int *p1,*p2,i;
pi=&i;
作用等于
**p1=100;
i=100;
其中是间接运算符号,表示间接引用或者复制指针变量指向的存储单元,如果执行了赋值语句怕=100;变量i的值就是100,如果执行了赋值语句i=100;间接引用指针变量p1得到的值就是100,即*p1的值为100。