C语言指针的运算(指针加或减一个整数的意义)

        指针可以加上或减去一个整数。指针的这种运算的意义和通常的数值的加减运算的意义是不一样的,以单元为单位。
例一:
#include<stdio.h>

int main()
{
	char a[]="0123456789";
	int *ptr = (int *)a;
	char *cp = a;
	printf("%d\t%d\n",sizeof(int),sizeof(char));
	while(*ptr!='\0')
	{
		printf("%c\n",*ptr);
		ptr++;
	}
	//while(*cp!='\0')
	//{
	//	printf("%c\n",*cp);	
	//	cp++;
	//}
	
	return 0;
}
 

运行结果:

        指针 ptr 被加了 1,编译器是这样处理的:它把指针 ptr 的值加上了 sizeof(int),在 32 位程序中,是被加上了 4,因为在 32 位程序中,int 占 4 个字节。由于地址是用字节做单位的,故 ptr 所指向的地址由原来的变量 a 的地址向高地址方向增加了 4 个字节。由于 char 类型的长度是一个字节,所以,原来 ptr 是指向数组 a 的第 0 号单元开始的四个字节,此时指向了数组 a 中从第 4 号单元开始的四个字节。
例二:
#include<stdio.h>

int main()
{
	char a[]="0123456789";
	int *ptr = (int *)a;
	char *cp = a;
	printf("%d\t%d\n",sizeof(int),sizeof(char));
	//while(*ptr!='\0')
	//{
	//	printf("%c\n",*ptr);
	//	ptr++;
	//}
	while(*cp!='\0')
	{
		printf("%c\n",*cp);	
		cp++;
	}
	
	return 0;
}
运行结果:


  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值