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;
}
运行结果:


猜你喜欢

转载自blog.csdn.net/hk_jy/article/details/80149786
今日推荐