指针的算术运算
声明指针为什么要包括数据的数据类型?
指针运算就是以指针所存放的地址作为运算量而进行,实质就是地址的计算。
数据:指针所存放数据的数据类型。
+ & -
应用:利用指针打印以上数组。
++ & --
问题:
*p ++ == (*p) ++ ?
验证:
结论:
优先级上:
- ++ > * :但是不能说:*p++ == *(p + 1) [详情请看后续问题]
- ()> ++: (*p)++ == (*p) + 1
前、后置运算符
q = p ++ == ( q = p ; p = p + 1 )
问题:以下*p++ = 3;等价于什么?
回答:
*p++ = 3 =>*p = 3 ; p = p + 1;
问题:将上述改为*++p = 3;
回答:
*++p = 3 => *(p+1) = 3
电脑的存储模式
问题:写一个程序判断电脑是大端还是小端。
答案:小端。
注意事项
问题:下列程序会输出什么。
问题:通过指针向数组存取数据。
指针的关系运算
应用
用指针实现逆序存放数组元素值。
错误示范:
首先,&arr1
是数组 arr1
的地址,它的类型是 int(*)[8]
,即指向一个有 8 个整数的数组的指针,而不是 int*
。
注意:数组名就已经等同于数组首元素的地址,因此不同于变量,需要增加'&'这个取地址操作符。
其次,指针运算通常用于访问数组中的元素,而不是直接交换它们。