关于指针的理解

#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", &para);
	printf("变量para自己的值是:  0X%x\n", para);
	
	pInt = &para;
	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;
} 
 

结果为:

preview

声明一个指针变量:

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) )个字节。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值