指针和数组

  指针提供一种以符号形式使用地址的方法。因为计算机的硬件指令非常依赖地址,指针在某种程度上把程序员想要传达的指令以更接近机器的方式表达。因此,使用指针的程序更有效率,尤其是指针能有效地处理数组

 

我们举一个变相使用指针的例子:数组名是数组首元素的地址,所以:

array == &array[0]; return TURN

上面两者都表示数组首地址的内存地址(&是地址运算符)。都是常量,如果我们把他赋值给指针变量,修改指针变量的值,数组的值会发生什么变化:

由此可得:

  • 指针的值是它所指向对象的地址。地址的表现方式依赖于计算机内部都硬件。
  • 在指针前面使用*运算符可以得到该指针所指向对象的值。
  • 指针加1,指针的值出传递增它所指向类型的到校(字节为单位)

即:

pti + 2 == &array_int[2];  //相同地址

*(pti_int + 2 ) == array_int[2];  //相同值

以上关系表明了数组与指针的关系十分密切,可以使用指针标识指针的元素和获取数组的值

所以定义ayyay[n]的意思是:*(array + n)到内存的array位置,移动n个单元,检索存储在哪里的值

注意,*的优先级高于+,所以*array + n == (*array) + n;

*(array + n)  //数组中第n个元素的值

 (*array) + n  //数组中第一个元素的值 + n

明白了数组与指针的关系,便可以在编写程序的适合适时使用

代码:

 

posted @ 2022-04-27 09:48  星雨boy  阅读(36)  评论(0)    收藏  举报