C 中的 sizeof(arr) 和 sizeof(*arr) 有什么区别。
int arr[] = { 1, 2, 0, 5, 5 };
int n = sizeof( arr ) / sizeof( *arr );
最佳答案
sizeof(arr)
是整个数组的大小。在您的例子中,它是 5 个整数的大小。如果 int 是 4 个字节,则为 5 * 4 = 20。
*arr
是数组的第一个元素。它等于 arr[0]
。 sizeof(*arr)
是这个元素的大小。在您的例子中,它是 4 个字节。
因此 sizeof( arr )/sizeof( *arr );
将给出数组中元素的数量。
您应该注意,这只会在定义数组的范围内起作用。如果将数组传递给函数,arr
将衰减为指针,而 sizeof (arr)
只会为您提供系统中指针的大小(通常4 或 8 个字节)。
关于c - C编程中数组中的星号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57847896/