C语言指针的定义和使用
一、什么是指针
指针(Pointer)是编程语言中的一个对象,通过地址直接指向内存中该地址的值。由于通过地址能够找到所需的变量存储单元,可以说地址指向该变量存储单元,因此将地址形象化称为"指针"。总而言之,指针就是变量,存放内存单元的地址,存放在指针中的值都会被当作地址处理。
如下图所示:
此时在内存中开辟一块存储空间,存放变量a的值5;同时定义了一个指针变量p,将变量a的地址赋给指针变量p,此时,指针变量p内存放的就是变量a的地址,通过*p即可访问到指针变量p指向地址的数据,即 *p 的值为 5 。
二、指针类型
所有实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,对应指针的值的类型都是一样的,都是一个代表内存地址的长的十六进制数。不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。
1、指针类型决定了指针进行解引用操作的时候,能够访问空间的大小。
int* p;* p能够访问4个字节
char* p; * p能够访问1个字节
double* p; *p能够访问8个字节
2、指针类型决定了指针的步长。例如:
此时定义了3个类型的指针,分别为char *、int *、double *,分别对其进行加1操作,结果如下:
此时int *类型的指针加1操作的步长为4,char * 类型的指针操作步长为1,double * 类型的指针操作步长为8。
三、指针和数组的关系
数组名即该数组首元素的地址,即数组名就是一个指针。
运行结果: