复杂的数据类型4
让编程改变世界
Change the world by program
指针和数组
在此之前关于地址和指针的例子中,我们使用的是标量类型:整数、实数和字符。 当我们遇到一个标量类型的变量时,我们创建一个与其类型相同的指针来存放它的地址。可是,当我们遇到的是数组时,做法有所改变吗? 这是小甲鱼这一节课想跟大家一起探讨的问题。 我们知道,计算机把数组是以一组连续的内存块保存的,例如:int myArray[3] = {1, 2, 3}; 在内存中是类似于这种形式存储: [caption id="attachment_458" align="aligncenter" width="300"]
int *ptr1 = &myArray[0];
int *ptr2 = myArray;
我们轻易的将数组的基地址用指针变量保存起来,那我们接着讨论第二个问题:如果我想要通过指针访问其他数组元素,应该怎么办? 试试:ptr1++; 指针运算的奇妙之处就在于,以上并不将地址值简单+1处理,它是按照指向的数组的数据类型来递增的,也就是 +sizeof(int)。 我们用实例来演示一下这个特性:example(源代码下载)思考
如有:int Array[5] = {1, 2, 3, 4, 5};
int *ptr = Array;
则*ptr + 1;
*(ptr + 1);
两者有何区别,大家课后考虑一下?