指针用于存储动态分配的数组的地址,以及用于作为参数传递给函数的数组。在其他情况下,数组和指针是两个不同的东西,请参见以下程序以证明此语句的合理性。
sizeof运算符的行为
C
C ++
输出:
arr []的大小24
ptr 8的大小
不允许将任何地址分配给数组变量
C
输出:
编译器错误:分配给时类型不兼容
从'int *'类型输入'int [2]'
尽管数组和指针是不同的东西,但是数组的以下属性使它们看起来相似。
数组名称给出数组第一个元素的地址。
例如,考虑以下程序。
C
C++
输出
第一个元素的值为10
使用指针算法访问数组成员
编译器使用指针算法访问数组元素。例如,像“ arr [i]”之类的表达式被编译器视为*(arr + i)。这就是为什么像*(arr + i)这样的表达式可用于数组arr,而像ptr [i]这样的表达式也可用于指针ptr的原因。
C
C++
输出:
arr [2] = 30
*(arr + 2)= 30
ptr [2] = 30
*(ptr + 2)= 30
数组参数始终作为指针传递,即使我们使用方括号也是如此。
C
输出:
sizeof(arr)= 24
sizeof(ptr)= 4
* ptr = 10
有关更多详细信息,欢迎持续关注哦~
领取专属 10元无门槛券
私享最新 技术干货