指针的移动(c语言)

指针的移动

对指针变量加上或减去一个整数,或通过赋值运算,使指针变量向相邻的存储单元移动。

指针每次加1就是指针向前移动指针类型对应的字节数,即1*sizeof(基类型)个字节

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int num = 6;
	int* ptr = &num;
	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';
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北茉疏影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值