c - C 中的 sizeof 数组元素

标签 c arrays

C 中,数组元素被视为指针。所以表达式 sizeof(arr)/sizeof(arr[0]) 变成 sizeof(int *)/sizeof(int) 结果是 1 那么为什么下面的程序输出的是 12 11

#include <stdio.h>

    int main()
    {
            int n1, n2;
            char arr1[] = "Hello World";
            char arr2[] = {'H','e','l','l','o',' ','W','o','r','l','d'};
            n1 = sizeof(arr1)/sizeof(arr1[0]);
            n2 = sizeof(arr2)/sizeof(arr2[0]);
            printf("n1 = %d\nn2 = %d\n", n1, n2);
            return 0;
    }

最佳答案

array elements are treated as pointers

这不是真的。数组不是指针。但是当传递给函数时,它们会衰减为指向第一个元素的指针。而sizeof(array)是整个数组占用的字节数。

关于c - C 中的 sizeof 数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490684/

相关文章:

java - 用Java写一个float数组到文件

c - getchar() 函数不起作用

c - 将值分类到适当的组中 : Counter Arrays

谁能建议我对我的代码进行必要的更改?

c - 如何在不使用循环的情况下调用 3 次 fork() 并创建 6 个进程

javascript - 将变量与数组元素进行比较 (javascript)

Php:将字符串连接到所有数组项中

javascript - 如何将包含日语字符的字符串有条件地放入Javascript中的单独数组中

我可以通过两者之间的服务器实现客户端 - 客户端通信吗?

javascript - 对象行为不被理解