c - C编程中数组中的星号

标签 c arrays pointers

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/

相关文章:

c - 递归 - 不确定为什么数字增加然后减少 1234554321

ios - 检查数组的当前索引是什么对象

c - 具有不同长度字符串的交错函数

c++ - 成员和指针

python - Python C 扩展的 DLL 文件的兼容性

将字符转换为整数

c - 带终止和不带终止的两个不同 while 循环之间的区别?

python - 有效地按降序对numpy数组进行排序?

javascript - react : Rendering Extra Components in Array Map

pointers - 如果我想在 Rust 中安全地编码,我应该在不使用指针算法的情况下编码吗?