代码"int nums[5]"做什么?

What does the code "int nums[5]" do?

本文关键字:什么 int nums 代码      更新时间:2023-10-16

int nums[5];做什么?当我将nums传递给std::cout时,它会打印一个我认为的内存地址,但我不明白代码本身在运行时实际在做什么。

int nums[5];为5个int值的静态数组分配内存。

当您执行std::cout << nums;时,它实际上是在调用std::cout.operator<<(nums);。虽然std::cout为许多不同的类型类型定义了许多<<运算符,但它没有接受int[]数组作为输入的<<运算符。它所拥有的是一个<<运算符,它接受const void*内存指针作为输入。它打印指针指向的内存地址的值。

静态数组可以"衰减"为指针,在本例中为int*

什么是数组衰减?

任何类型的指针都可以分配给CCD_ 15。并且任何非const变量都可以分配给兼容类型的const变量。这就是为什么编译器在调用std::cout << nums;时不会抱怨的原因。它在幕后的表现本质上类似于std::cout.operator<<((void*)(int*)nums);

'nums'是一个包含5个int类型数据的数组。例如:int nums[5]={1,2,3,4,5};

如果你想定制nums,你应该这样写代码:

for(int index = 0; index < 5; index ++){
    std::cout<<nums[index]<<std::endl;
}

但是,如果你想要它的内存地址,你应该这样写你的代码:

for(int index = 0; index < 5; index ++){
    std::cout<<nums<<std::endl;
    nums ++;
}