C++ 为什么sizeof(&;arr)和sizeof(arr)/sizeof(int)不同? 使用名称空间std; int main() { int-arr[5]={1,2,3,4,5}; 差异在于arr是一个数组,而&arr是一个指向数组的指针。比较:
为什么sizeof(&;arr)和sizeof(arr)/sizeof(int)不同?C++ 为什么sizeof(&;arr)和sizeof(arr)/sizeof(int)不同? 使用名称空间std; int main() { int-arr[5]={1,2,3,4,5}; 差异在于arr是一个数组,而&arr是一个指向数组的指针。比较: ,c++,C++,为什么sizeof(&;arr)和sizeof(arr)/sizeof(int)不同? 使用名称空间std; int main() { int-arr[5]={1,2,3,4,5}; 差异在于arr是一个数组,而&arr是一个指向数组的指针。比较: using namespace std; int main( ) { int arr[ 5 ] = { 1 , 2 , 3 , 4 , 5 } ; cout << sizeof( arr ) << end
使用名称空间std;
int main()
{
int-arr[5]={1,2,3,4,5};
差异在于arr
是一个数组,而&arr
是一个指向数组的指针。比较:
using namespace std;
int main( )
{
int arr[ 5 ] = { 1 , 2 , 3 , 4 , 5 } ;
cout << sizeof( arr ) << endl ;
cout << sizeof( &arr ) << endl ;
return 0 ;
}
平台上的指针大小固定,无论指向何处(指向常规类型的指针,而不是成员或函数的指针)不确定是否有现成的答案可以很好地解释这一点,但很接近。这可能会有所帮助:指向数组的指针的大小并不取决于数组的大小。是什么让你认为地址的大小和数组中元素的数量应该是相同的?+1我不知道&arr
的大小和指向数组的指针ptr_-arr
可以通过使用指向数组的指针赋值来实现相等。这澄清了我的想法。如果&arr和ptr_-arr是相同的,即指向数组的指针为5整数,为什么*(&arr+1)给出错误的输出,而*(arr+1)给出正确的输出output@RoCkEtarr
衰减为int*
,而&arr
是int(*)[5]
即指向5个整数数组的指针。+1
指针算法在这两者之间是不同的,*(arr+1)
只是arr[1]
而*(&arr+1)
是超出arr
末尾的越界访问。
#include <iostream>
using namespace std;
int main( )
{
int arr[5] = { 1, 2, 3, 4, 5 } ; // array of 5 integers
int (&ref_arr)[5] = arr; // reference to array of 5 integers
int (*ptr_arr)[5] = &arr; // pointer to array of 5 integers
cout << "array size " << sizeof(arr) << " = " << sizeof(ref_arr) << endl;
cout << "pointer size " << sizeof(&arr) << " = " << sizeof(ptr_arr) << endl;
return 0 ;
}
array size 20 = 20
pointer size 8 = 8