指针的移动:
对指针变量加上或减去一个整数,或通过赋值运算,使指针变量向相邻的存储单元移动。
指针每次加1就是指针向前移动指针类型对应的字节数,即1*sizeof(基类型)个字节
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int num = 6;
int* ptr = #
printf("num的值:%d\n", num);
printf("ptr指向的值:%d\n", *ptr);
printf("num的地址:%p\n", &num);
printf("ptr减1后存储的地址:%p\n", ptr - 1);
printf("ptr存储的地址:%p\n", ptr);
printf("ptr加1后存储的地址:%p\n", ptr + 1);
printf("ptr的地址:%p\n", &ptr);
return 0;
}
注意:p+1与p++本质上是两个不同的操作
p+1并不改变当前指针的指向,p仍然指向原来的指向的元素(没有对p进行赋值操作)
p++相当于执行p=p+sizeof(p的基本类型) (p执行了赋值操作而改变了指针p的指向)
以实现mystrcpy编程为例:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define N 80
void mystrcpy(char* dststr, char* srcstr);
int main()
{
char a[] = "Hello China";
char b[N];
mystrcpy(b, a);
printf("The copy is:");
puts(b);
return 0;
}
void mystrcpy(char* dststr, char* srcstr)
{
while (*srcstr != '\0')
{
*dststr = *srcstr;
srcstr++; //使srcstr指向下1一个字符//
dststr++;//使dststr指向下一个存储单元//
}
*dststr = '\0';
}