c语言指针概述 指针简介


1 c语言指针的优点

c语言拥有一个重要特性就是指针,指针在c语言程序编写中起着非常重要的作用。
利用指针我们可以直接对c语言所开辟的内存区域进行操作,可以直接对内存区域中饿不同结构的数据进行快速处理,并且采用指针作为参数传递,可以达到快速操作参数。
指针操作是快速操作计算机内部资源的一种方式。
因此如果能够正确熟练的使用指针可以编制简洁、性能强、质量高的程序,但如果错误或不当的使用指针,会导致程序严重失控,更严重可能会影响计算机内其它程序及数据结果。

2 c语言概念



2.1 变量的地址

当一个程序被执行时,程序中所涉及的指令 常量 变量 都会被存储在计算机的内存中。
计算机中内存是以字节为单位定义的一片连续的地址空间,计算机为每个字节都定义了一个编号,这个编号称之为内存地址。
类似于仓库的货架,每个货架都会依次编号 0001 0002 0003 ,没有货架编号,管理人员就无法对其进行管理,同理,如果没有内存编号,计算机系统就不能对内存进行管理,在计算机中,我们为一片内存区域定义一个连续的地址编号,这些地址编号就是我们以后可以存放数据的区域。
如下所示:
在程序中定义如下变量:
short d1 =1;
int d2 =200;
long int d3 =300;
char d4 =’D’;
如上所示:
假如系统给变量d1分配地址2000(占用2个字节)
给变量d2分配地址2002 (占用4个字节)
给变量d3分配地址2006 (占用8个字节)
给变量d4分配地址2014 (占用一个字节)
在高级语言中,我们是通过这些名字来间接访问这些变量,此时系统会给出变量名和地址间的关系表,通过这张关系表对变量进行操作,所以我们可以看出,对变量的访问最终都会转换为对内存地址的访问。


对变量的访问分两种:

1 读

例:
printf(“%d”,d3);
根据这条语句,计算机首先找到d3所对应的地址2006 ,然后根据d3的数据类型获取d3的数据长度为8个字节,那么就读取连续的16位转换为对应的格式输出屏幕。

2 写

例:
int d2 =200;
首先找出d2所对应的内存地址,然后将200存储到2002~2006 的连续的地址空间里面。

3 指针变量

在c语言中,除前面介绍的普通变量之外,还有一种特殊性质的变量,那就是 指针变量
指针变量是存放地址的变量,由此可以看出,指针变量本身也是一个变量,它和普通变量一样占用一定的存储空间,但是和普通变量的不同之处在于,指针变量只存储一个变量的首地址,而非变量的value。
例:
有一个指针变量a,有一个普通变量 b,如果将普通变量b的地址装入到a中,那么我们就称之为指针变量a是指向变量b的指针变量。

当将某一地址赋值给指针变量时,该指针变量就指向这个地址的内存区域,我们将指针变量指向的内存区域中的数据称为指针的目标。如果指向的区域是一个变量的内存空间,则这个变量称之为指针的目标变量。

指针除可以访问变量之外,还可以访问内存中的任何数据结构,如 数组 结构体 联合体 函数,等等。

相关阅读:
c语言中指针简介
c语言指针注意事项