初学者指针指南
2006-04-11 22:54:17 来源:WEB开发网#include <stdio.h>
void main()
{
int Array[3];
Array[0] = 10;
Array[1] = 20;
Array[2] = 30;
int *pArray;
pArray = &Array[0];
printf("pArray points to the value %d\n", *pArray);
pArray++;
printf("pArray points to the value %d\n", *pArray);
pArray++;
printf("pArray points to the value %d\n", *pArray);
}
同样,你也可以减去值,所以pArray - 2就是pArray当前位置的前两个元素。不过,请确定你是在操作指针,而不是操作它指向的值。这种使用指针的操作在循环的时候非常有用,例如for或while循环。
请注意,如果你有了一个指针(例如int* pNumberSet),你也可以把它看作一个数组。比如pNumberSet[0]相当于*pNumberSet,pNumberSet[1]相当于*(pNumberSet + 1)。
关于数组,我还有最后一句警告。如果你用new为一个数组分配空间的话,就像下面这个样子:
int *pArray;
pArray = new int[6];
那么必须这样释放它:
delete[] pArray;
请注意delete之后的[]。这告知编译器它正在删除一个整个的数组,而不是单独的一个项目。你必须在使用数组的时候使用这种方法,否则可能会获得一个内存泄漏。
最后的话
最后要注意的是:你不能delete掉那些没有用new分配的内存,像下面这个样子:
void main()
{
int number;
int *pNumber = number;
delete pNumber; // 错误:*pNumber不是用new分配的
}
更多精彩
赞助商链接