代码"int nums[5]"做什么?
What does the code "int nums[5]" do?
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 ++;
}
相关文章:
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- "类模板示例<int>;"语句对 C++11 是什么意思?
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 关于int :0有什么特别之处在C++
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- ((int) a) 和 (int(a)) 之间的区别是什么?
- 在 C 和 C++ 中作为函数参数,int **a 和 int a[][] 之间有什么确切的区别
- map<string, int> m= {}; 在C++中是什么意思?
- 有什么方法可以使用 int 变量来完成组件名称吗?
- int x_ 和 int x 在C++中有什么区别
- 行 - " vector<int> used(adj.size(), 0); "是什么意思?
- int** a = new int*[n]();这个函数有什么作用?
- *(int*)&data[18]在这段代码中实际上做了什么?
- 无符号长整型和无符号 int 之间有什么区别,这 2 种类型应该如何在 c# 中封送?
- 在 c++ 上,您通常使用什么 int 值、'255' 和十六进制值'0xff'?
- 有人可以向我解释什么[](int i){返回i%2 == 0;} 方法
- 更大的在集合中扮演什么<int>角色?
- 如何在矩阵中使用指针.这行代码的作用是什么:int r=**(++b);
- 编译器在这里做什么:int a = b * (c * d * + e)