指针可以进行加法,减法,及比较大小的运算。
1、指针加、减一个整形表达式
pointer+/-n:是pointer地址值+/-n×sizeof(*pointer),即地址值实际增加或减少的字节数为n倍对象类型长度。
2、两个对象类型相同的指针进行减法运算
p-q=n:运算结果对象类型是一个整数,表示两个地址值相差的对象类型长度的倍数。
3、指针比较大小,就是比较地址值的高低。
4、首地址:当数据对象的存储长度超过一个字节时,系统自动使用第一个内存单元的地址来表示对象的存储地址,称为首地址。
5、指针常量:NULL,数组名,函数名
6、初始化:
int a[4],*p;
p=NULL;
p=a+1;
double (*f)(double)=sin;
7、安全使用指针:
用已有变量或数组元素作指针对象
用malloc和free分配和释放
void *malloc(n);
free(void *p);
8、指针与数组在大多数情况下可以相互替换,但是并不等价。数组名对应起始地址,在生命周期内不可改变,但数组内容可以改变;而指针变量是一个变量。注意下面一个例子:
#include "iostream"
using namespace std;
int main()
{
char* p1="world"; //指针指向常量字符串
p1[0]='X'; //p1指向常量,该语句试图修改常量,是错的
cout<<p1;
return 1;
}