代码“int nums [5]”有什么作用?

时间:2015-11-19 02:45:47

标签: c++

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

2 个答案:

答案 0 :(得分:2)

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

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

静态数组可以“衰变”#34;转换为指针,在本例中为int*

What is array decaying?

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

答案 1 :(得分:-2)

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

如果你想讨论nums,你应该像这样编写你的代码:

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

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

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