gpt4 book ai didi

c++ - 试图理解数组名称的含义

转载 作者:搜寻专家 更新时间:2023-10-31 00:08:18 24 4
gpt4 key购买 nike

<分区>

我写了这个简单的程序

 #include <iostream>

using namespace std;

int main (){
int arr [5] = {1,2,3,4,5};

cout<<arr<<endl; //Line 1
cout<<&arr<<endl; //Line 2

cout<<sizeof(arr)<<endl; //Line 3
cout<<sizeof(&arr)<<endl; //Line 4
}

我的预期是:

  • 第 1 行:arr是数组的名称,它是指向第一个元素的指针 arr = &arr[0] ,因此地址为 &arr[0]将打印出来
  • 第 2 行:arr[0] 的地址将被打印出来,&arr = arr
  • 第 3 行:sizeof(arr)正在获取 sizof(a pointer)arr是一个指针,我应该得到 4 bytes

  • 第 4 行:sizeof(&arr)与第 3 行相同,因为 &arr是指针类型,我应该得到 4 bytes

但是在第 3 行中:我得到 20 个字节 (sizof(int)* number of integers)

enter image description here

Line2怎么进来:arr充当指针,在Line3中充当数组

我知道数组不是指针,但是当传递给函数时它会衰减为指针,sizeof(..)是一个运算符,因此它处理 arr作为数组,<< 也是, 它是一个运算符而不是一个函数

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com