8.2.3 指针的定义与访问
指针也有数据类型。指针的数据类型需要和它所指向的变量类型匹配。定义指针的方法是用定义变量的方法,在变量名称前面加一个"*"。例如下面的代码是指向不同数据类型的指针。
- 01 int *p1; /*定义一个指向整型变量的指针。*/
- 02 char *p2; /*定义指向一个字符型变量的指针。*/
- 03 float *p3; /*定义一个指向浮点型变量的指针。*/
一个变量是用"&"取地址的。一个指针变量可以用"*"来取这个变量指向的数值。例如范例8-3所示的代码是使用指针访问变量的实例。
【范例8-3】指针的使用案例,实例代码如下所示。
实例代码8-3
- 01 #include <stdio.h>
- 02 int main()
- 03 {
- 04 int i ,j; /*定义两个整型变量。*/
- 01 int *p; /*定义一个指向整型变量的指针。*/
- 02 char a ,b; /*定义两个字符变量。*/
- 03 char *q; /*定义一个指向字符变量的指针。*/
- 04 i=5; /*i赋值为5。*/
- 05 p=&i; /*取i的地址赋值给p。*/
- 06 j=*p; /*取指针p指向的变量值赋值给j。*/
- 07 a='w'; /*a赋值为w。*/
- 08 q = &a; /*取a的地址赋值给指针变量q。*/
- 09 b=*q; /*取指针q指向的变量值赋值给b。*/
- 10 printf("%d %d %d \n",i ,j ,*p); /*输出结果。*/
- 11 printf("%c %c %c \n",a ,b ,*q); /*输出结果。*/
- 12 return 0;
- 13 }
【执行结果】输入下面的命令,编译这个程序。- gcc 8.3.c
输入下面的命令,运行这个程序。- ./a.out
程序的运行结果如下所示。- 5 5 5
- w w w
从结果可知,通过一个指向变量的指针,可以访问被指向变量的值。在C语言的函数参数中,常常通过指针来访问一个变量的值。
【代码解析】实例代码8-3的代码解析如下:
代码第01行和第03行分别定义了两个指针变量。
代码第05行和第08行将变量的地址赋值给指针变量。
代码第10行和第11行输出指针变量和非指针变量的值。