#include <stdio.h>
int main(void)
{
int *pInt = NULL;
printf("指针变量pInt自己的地址是: 0X%x\n", &pInt);
//printf("指针变量pInt自己的值是: 0X%x\n", pInt);
int para = 1;
printf("变量para自己的地址是: 0X%x\n", ¶);
printf("变量para自己的值是: 0X%x\n", para);
pInt = ¶
printf("指针变量pInt自己的值是: 0X%x\n", pInt);
printf("指针变量pInt的他值是: 0X%x\n", *pInt);
int arr_int[2] = {1, 2};
pInt = arr_int;
printf("arr_int第一个元素arr_int[0]的地址是: 0X%x\n", pInt);
printf("arr_int第二个元素arr_int[1]的地址是: 0X%x\n", pInt + 1);
double *pDouble = NULL;
double arr_double[2] = {1.1, 2.2};
pDouble = arr_double;
printf("arr_double第一个元素arr_double[0]的地址是: 0X%x\n", pDouble);
printf("arr_double第二个元素arr_double[1]的地址是: 0X%x\n", pDouble + 1);
return 0;
}
结果为:
声明一个指针变量:
type *pType = NULL;
pType有5个维度,分别是:
pType = (己址,己值,他址,他值,他型);
1 己址:即“自己的地址”
指针变量pType作为一个变量,也有自己的地址,常见的代码写法是“&pType ”。
己址在一般的程序中不会被频繁地用到,如果要用的话,就涉及到“指针的指针”,这又是另外一个话题了,本文不讨论;
2 己值:即“自己的数据值”
指针变量pType 作为一个变量,也有自己的数据值,代码的写法是“pType ”。
也可以在己值上做加减法运算,常见的代码写法有“pType + N”、“pType - N”、“pType2 - pType1”等。
3 他址:即“他人的地址”
指针变量pType的己值,意义除了表示自己的数据值外,还表示了与pType绑定在一起的“type”类型的变量的地址。一般而言,指针变量pType的“己值”与“他址”在数据值上是一样的。
将一个type类型的变量与pType绑定在一起的常见方式是:pType = &变量;
4 他值:即“他人的数据值”
一旦type类型的变量与pType绑定在一起,指针变量pType可以通过一些代码写法,来获取type类型变量的值,也就是“他值”。常见的代码写法有:“ *pType ”、“ pType-> ”等。
而这些代码的写法:“ *(pType + N) ”、“ *(pType - N) ”、“ pType[N]”也是获取的“他值”,不过需要特别说明一下:
pType + N 你可以看成是:
type *pTemp = pType + N;
“ *(pType + N) ”其实计算的就是指针变量pTemp的“他值”。
“ *(pType - N) ” 你就好理解了吧;
“ pType[N]”其实就是“ *(pType + N) ”
5 他型:即“他人的类型”
声明指针变量pType时,前面的“type”不是用来修饰pType 的“己值”的,而是用来修饰“他值”的,也就是说,“type”不是说pType的“己值”是一个type类型的数据值,而是指pType 的“他值”是一个type类型的数据值。
“他型”在代码中的作用,主要是计算“pType + N”、“pType - N”时,pType要加上或者减去 ( N * sizeof(type) )个字节。