我初始化了一个大小为10的数组,但在打印时,sizof数组显示为40。代码如下,
#include <iostream>
using namespace std;
int main() {
int arr[10] = {2,4,5,6,7,8,9,6,90};
printf("%d \n" , sizeof(arr));
}
输出:
/Users/venkat/Library/Caches/CLion2016.1/cmake/generated/InsertionSort-e101b03d/e101b03d/Debug/InsertionSort
40
Process finished with exit code 0
C在这里打印40个什么?
答案 0 :(得分:6)
sizeof
返回内存中数组的大小,而不是数组的长度。然后,因为sizeof(int)
是4个字节而你的数组有10个int值,所以它的大小是40。
答案 1 :(得分:1)
因为sizeof
是内置运算符,它对表达式的类型起作用。对于数组(而不是指针),它将打印sizeof(array_element_type) * array_length
。
在您的系统上,sizeof(int)
必须为4。
一旦你对学习
感到兴奋sizeof(array)/sizeof(array[0]) == array_length
请记住,一旦你将数组传递给一个函数,它就会衰减为一个指针而且不再存在。
答案 2 :(得分:1)
您的数组包含10个整数。
10 * sizeof(int)
int是32 bits = 4 bytes.
4 * 10 = 40.简单数学
答案 3 :(得分:1)
您需要将sizeof(arr)除以一个元素的大小: sizeof(arr)/ sizeof(arr [0])
这是因为sizeof(arr)显示了参数的字节数,即sizeof(int)* array dimention