你好, 欢迎回来｡
在这节课中, 我想谈谈指针和数组之间的关系｡
有一个很强的关系, 我们需要理解这个关系, 然后才能真正谈论指针算术｡
那么我们开始吧｡
数组是相同型别的物件集合,
您可以使用单一名称来指涉这些物件｡ 我们知道我们现在已经很擅长数组了｡
我们已经在几个小节中使用了字符数组｡
它是一个数组, 你可以通过在括号里加下标来访问它.
我们记得｡
我们知道数组是从零开始的｡
但同样, 这只是一种用相同的变量名保存多个月份的方法｡
指针是一个变量,
它有自己的值, 内存地址作为它的值, 它可以引用另一个变量或给定类型的常量｡
在这一点上, 我们也应该非常清楚什么是指针｡
它只保存一个内存地址｡
您可以使用指针来保存不同变量在不同时间的地址｡
但你必须有相同的类型｡
一个int指针必须指向还原int类型的地址｡
数组和指针看起来有很大的不同,
但它们之间的关系非常密切, 有时可以互换使用, 尤其是在使用字符数组时｡
你可以创建一个字符, 记住,
这是一个字符串, 你可以创建一个字符指针, 它们本质上是一样的｡
无论您是否使用字符指针分配内存和释放内存, 都只有细微的差别｡
对于字符数组,
您不必这样做, 但字符a也是固定大小的｡
因此,
如果创建一个大小为20的字符数组字符串, 则只能存储19个字符｡
使用字符指针,
您可以使用动态内存管理, 您可以增加或减少大小, 它可以更有效地考虑内存｡
但是指针在c中最常见的用途之一是作为指向数组的指针｡
这是您最常使用指标的时候, 特别是指向字符的指标｡
字符指针与字符数组相同｡
使用指针擦除的主要原因是符号的方便性和程序的效率｡
所以在很多情况下, 你可以使用数组或者指针,
除了动态内存管理的时候｡
但在大多数情况下你可以｡ 唯一不同的是它的语法, 它的符号｡
它是指是否使用下标来访问元素或者是否使用指针运算是否使用字符指针来指向该元素的特定地址｡
使用字符指针也会更有效｡
指向数组的指针通常会使代码使用更少的内存, 并且执行速度更快｡
因此, 您希望尽可能多地使用字符指针,
并使用指向其他数据类型的指针｡
因为它速度更快, 使用的内存更少｡ 大多数情况下, 指针位于数组上方｡
如果你有一个100个整数的数组,
我们知道这意味着什么, 你只要说int的值是100｡ 100是大小｡
这意味着可以在该数组中存储100个整数｡
您也可以定义指标｡
我们将它命名为values指针因为它指向values数组, 并且可以用来访问数组中包含的整数.
所以我们只说instar值指针｡ 现在我们知道如何声明一个指针｡
当您定义用来指向数组元素的指标时, 请不要将指标指定为数组的型别指标｡
到目前为止, 我们所听到的都是指针指向端点, 指针指向双精度｡
但是当你使用数组的时候, 你不会说指向数组｡
该实际指针指向数组中包含的特定元素｡
所以请记住这一点｡
当你用值的地址清除一个指针时, 它实际上不是整个数组｡
所以要设置values指针指向values数组的第一个元素, 你所要做的就是说values指向或等于values｡
你不必把地址写在那里｡
因为值数组是一个指针｡
这就是你必须在你的脑海中驱动的, 所有这些数组都是隐藏在引擎盖下的指针｡
所以如果你想把数组的第一个元素赋给一个指针, 你所要做的就是在等号运算符的右边指定数组,
而在左手只有值指针.
这将指向数组中的第一个地址或第一个元素｡
未使用地址运算符, 请注意｡
c编译器将不带下标的数组名的外观视为指向该数组的指针｡
因此, 指定不带下标的值会产生指向值的第一个元素的指针｡
这意味着你现在可以指向数组中的后续值,
只需要增加指针, 就可以到达下一个地址｡
这也是我们在接下来的几节课, 讲点算术时要讲的内容｡
它实际上只是一个符号, 也是一个效率问题｡
因此, 产生指向值的开始的指针的等效方式是也将运算符的地址应用于右边的第一个元素｡
所以你可以用两种方法, 任何一种方法都可以｡
但你也可以这样做｡ 你可以说值指针地址的值小于零｡
这将把值指针设置为指向数组中的第一个元素｡
所以你可以用这个或者你可以直接说点等于值｡
显然,
如果没有&符号和下标, 代码会更少一些, 或者更容易编写｡
这可能更清楚一点, 因为除非你看了声明, 否则你不一定知道values是数组｡
但同样, 无论哪种方式都可以｡
值指针等于值, 或值指针等于小于零的值的地址｡
这是程序员偏好的问题｡ 再说一次, 这是一个符号的问题｡
重申一下, 当你有两个表达式ar
sub-i和星号ar plus i时, 它们的意义是等价的｡
所以我们只想确保你明白这一点｡
如果ar是数组的名称, 则两者都有效｡
您可以使用指标, 也可以取消指涉指标｡
如果它是指针变量, 这两种方法都有效｡
只有当ar是指针变量时, 使用诸如ar plus plus这样的表达式才有效｡
所以你不能通过说plus plus来增加数组并期望它转到下一个元素｡
只能对数组指针或指针执行此操作｡
所以如果我们有一个指针ar, 指向数组, 我们想转到下一个元素,
我们每次都可以递增它｡
但是如果你说ar sub-i因为ar sub
i是一个数组而数组是一个指针, 你可以通过说ar来解引用它, 也就是说, ar是一个我们赋给ar加i的指针,
这是一样的｡
在接下来的几节课中,
我们会讨论点运算, 这与数组和指针之间的关系密切相关｡
指针可以是数组｡ 它不是指针数组, 而是元素｡
所以你可以用指针的地址来导航数组, 迭代数组.
-谢谢—谢谢