在C语言中,可以存储地址的变量称为指针。存储在指针中的地址通常是另一个变量的地址。
例如有一个指针point_number
,它包含另一个名称为number
变量的地址。
每种类型都有自己的指针类型。指针只能用于指向该类型的变量。
所以“指向int
的指针”类型的指针只能指向int
类型的变量。“指向float指针”类型的指针只能指向float
类型的变量。
通常,对于任何给定的类型名称type
,给定类型的指针都是type *
。
类型名称void
表示不存在任何类型,因此void *
类型的指针可以包含任何类型的数据项的地址。
类型void *
用作独立类型数据的参数类型或返回值类型。任何类型的指针都可以作为void *
类型的值传递,然后在使用它时转换为适当的类型。
使用指针示例
#include <stdio.h>
int main(){
int* pc;
int c;
c=22;
printf("Address of c:%u\n",&c);
printf("Value of c:%d\n\n",c);
pc=&c;
printf("Address of pointer pc:%u\n",pc);
printf("Content of pointer pc:%d\n\n",*pc);
c=11;
printf("Address of pointer pc:%u\n",pc);
printf("Content of pointer pc:%d\n\n",*pc);
*pc=2;
printf("Address of c:%u\n",&c);
printf("Value of c:%d\n\n",c);
return 0;
}
执行上面示例代码,得到以下结果:
Address of c: 2686784
Value of c: 22
Address of pointer pc: 2686784
Content of pointer pc: 22
Address of pointer pc: 2686784
Content of pointer pc: 11
Address of c: 2686784
Value of c: 2