指针与数组的区别

date
Jul 25, 2021
Last edited time
Jul 25, 2021 05:37 AM
status
Published
slug
指针与数组的区别
tags
DataStructure
summary
前几天被问到这个问题, 或许是有点太紧张了吧, 回答的并不是很好, 所以现在整理了一下放出来
type
Post
Field
Plat

指针与数组的关系

数组的首地址可以通过 ptr = a; ptr = &a[0]; 来获得.
区别:
  1. 数组和指针都有自己的地址, 可以通过 & 运算符来取得
  1. 数组 a 的值为存放数组元素的首地址, 是一个常量. 指针 ptr 赋值之后的值也是数组元素的首地址, 是个可以变化指针变量
    1. 由于数组名是一个地址, 因此不允许使用修改, 赋值等操作
  1. 使用数组名和指针获得元素的值的时候, 用法是一致的. a[0];ptr[0];*(a+1);*(ptr+1)
  1. sizeof(a) 获得这个数组所占用的空间大小 sizeof(ptr) 获得指针地址的长度, 根据实际机器的位数不同而不同

指针与一维数组

对数组进行取值, a[i] 相当于 *(a+i)
 

指针与多维数组

指针为数组指针, 申明方式为 int (*ptr)[3];
多维数组首地址 a == 第一个一维数组首地址 a[0], *a == 第一个元素地址 &a[0][0]

传参时指针退化

  1. 把数组作为参数进行传递时, 会退化为指针
参考链接:

© Lazurite 2021 - 2024