0 c++ arrays parsing stl compilation
在 C++ 中,当我必须在某个函数中使用数组时,我将数组作为参数传递并获取指向数组第一个元素的指针。虽然可以使用,并且使用指针并不麻烦,但我想知道是否存在一些内置头文件或任何其他指令集,当我想访问第i
-th 个元素时我可以简单地编写的数组array[i]
,它被编译器读取为*(array+i)
?
如果存在那就太好了,因为它会使其非常统一且易于编码,因为在我使用向量的所有时间我都可以访问vector[i]
数组中的第 i 个元素,而我必须以另一种方式使用它*(array+i)
。
另外,为什么 C++ 的开发人员选择返回指向数组的指针而不是对象本身的原因?
我想知道是否存在一些内置头文件或任何其他指令集,当我想访问数组的第 i 个元素时,我可以简单地编写 array[i] 并且它被编译器读取为 * (数组+i)
不,没有这样的标题或指令集,因为它是语言的一部分。
对于指针和整数类型,a[i]
表示 *(a+i)
。这是一个如此强烈的声明:
int base_array[3]={1,2,3}; // an array of 3 elements
int* ptr_array = base_array; // base_array "decays" to a pointer to the first element
std::cout << 2[ptr_array] << "\n"; // huh?!?!
Run Code Online (Sandbox Code Playgroud)
打印 3,因为*(2+ptr_array)
是3
; 即,它甚至可以向后工作。
归档时间: |
|
查看次数: |
167 次 |
最近记录: |