第二章。指針的算術(shù)運算
指針可以加上或減去一個整數(shù)。指針的這種運算的意義和通常的數(shù)值的加減運算的意義是不一樣的。例
如:
例二:
1。 char a[20];
2。 int *ptr=a;
...
...
3。 ptr++;
在上例中,指針ptr的類型是int*,它指向的類型是int,它被初始化為指向整形變量a。接下來的第3句
中,指針ptr被加了1,編譯器是這樣處理的:它把指針ptr的值加上了sizeof(int),在32位程序中,是被
加上了4。由于地址是用字節(jié)做單位的,故ptr所指向的地址由原來的變量a的地址向高地址方向增加了4個
字節(jié)。
由于char類型的長度是一個字節(jié),所以,原來ptr是指向數(shù)組a的第0號單元開始的四個字節(jié),此時指向了
數(shù)組a中從第4號單元開始的四個字節(jié)。
我們可以用一個指針和一個循環(huán)來遍歷一個數(shù)組,看例子:
例三:
int array[20];
int *ptr=array;
...
//此處略去為整型數(shù)組賦值的代碼?!?BR> ...
for(i=0;i<20;i++)
{
(*ptr)++;
ptr++;
}
指針可以加上或減去一個整數(shù)。指針的這種運算的意義和通常的數(shù)值的加減運算的意義是不一樣的。例
如:
例二:
1。 char a[20];
2。 int *ptr=a;
...
...
3。 ptr++;
在上例中,指針ptr的類型是int*,它指向的類型是int,它被初始化為指向整形變量a。接下來的第3句
中,指針ptr被加了1,編譯器是這樣處理的:它把指針ptr的值加上了sizeof(int),在32位程序中,是被
加上了4。由于地址是用字節(jié)做單位的,故ptr所指向的地址由原來的變量a的地址向高地址方向增加了4個
字節(jié)。
由于char類型的長度是一個字節(jié),所以,原來ptr是指向數(shù)組a的第0號單元開始的四個字節(jié),此時指向了
數(shù)組a中從第4號單元開始的四個字節(jié)。
我們可以用一個指針和一個循環(huán)來遍歷一個數(shù)組,看例子:
例三:
int array[20];
int *ptr=array;
...
//此處略去為整型數(shù)組賦值的代碼?!?BR> ...
for(i=0;i<20;i++)
{
(*ptr)++;
ptr++;
}