1. 程式人生 > >C語言指標的運算(指標加或減一個整數的意義)

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;
}
執行結果: