1、通过指针计算数组的元素(指针相减,类型需要一致),比如数组元素指针相减得到的是中间相差的元素个数,可以用于计算数组元素的个数等
#include "stdio.h"
#include <stdlib.h>int main()
{int a[10] = { 0 };int* p = a;for (int i = 0; i < sizeof(a) / sizeof(a[0]);i++) {//*(p+i) = i;a[i] = i;}for (int i = 0; i < sizeof(a) / sizeof(a[0]);i++) {printf("%d=%d\n",i,a[i]);}int* pp = *(&a + 1) - sizeof(a[0]);printf("%d\n",*pp);// 6int* ppp = (int *)(&a + 1) -1;//两个1不一样 第一个1是数组长度,第二个是数组元素的长度//&a+1 是针对元素的宽度的类型为int[10],转成一个元素的指针类型int *才能对元素的长度进行操作printf("%d\n", *ppp);// 9printf("%d\n", ppp - p);// 9printf("%d\n", ppp - (p+1));// 8printf("%d\n",*(p+3));//3//printf("%d\n",*(p+pp));//err “ + ”: 不能添加两个指针system("pause");return 0;
}
2、两个指针想加没有意义(思考运营)
//printf("%d\n",*(p+pp));//err “ + ”: 不能添加两个指针