指针的加减法
指针的加法需要调整,调整的权重为sizeof(指针去掉一个*)
int *p;p++;加sizeof(int)
short *p;p++;加sizeof(short)
double *p;p++;加sizeof(double)
int *p=(int *)2000;
printf("%d\n",p+2); //2008
printf("%d\n",(short *)p+2); //2004
printf("%d\n",(float *)p+2); //2008
printf("%d\n",(double **)p+2); //2008
printf("%d\n",(char *)p+2); //2002
printf("%d\n",(unsigned long)p+2); //2002
指针+指针
不可以
指针-数字
指针减法需要调整,调整的权重为sizeof(指针去掉一个*)
指针-指针
合法,表示间隔的单元数,需要调整
分两步:
1.算出间隔字节数
2.除以调整权数
需要记住p[i]=*[p+1]=arr[i]
思考题:
讲一个数组的值赋给另一个数组:
void Mystrcpy(char *des,char *src)
{
while(*des++=*src++);
}
注:需注意++的优先级高于*