c - sizeof(<字符串数组>) 始终返回 8

标签 c arrays types char size

我正在尝试使用这个技巧,通过将数组大小除以类型的大小来获取数组中的项目数:sizeof(array) / sizeof(<type>)sizeof(array) / sizeof(array[0])

出于我不完全理解的原因,当我尝试将数组作为类型 const char** 的函数的参数时然后调用sizeof() ,它总是返回 8。

#include <stdio.h>

void write(const char** arr) {
    printf("%ld", sizeof(arr));
}

int main() {
    const char* word[] = {
        "asdf",
        "qwer",
        "hjkl"
    };

    write(word);

    return 0;
}
>> 8

所以sizeof(array) / sizeof(const char*)结果总是 1。

发生什么事了?

最佳答案

这真的是你的printf()吗?如果是这样,那就完全错误了,你没有格式字符串:

int main(void) {
    const char* word[] = {
        "asdf",
        "qwer",
        "hjkl"
    };


    printf("%zu\n", sizeof(word));
}

输出:

12

关于c - sizeof(<字符串数组>) 始终返回 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49593768/

相关文章:

PostgreSQL:将 UUID 转换为 OID

c - 使用 c 从应用程序指示器中的 GtkMenu 中删除 GtkMenuItem

c - 迭代二维数组时索引的奇怪行为

c - && 优先于 ||

java - java中删除数组中的元素

javascript - 使用 JavaScript 从每个元素中删除隐藏类

C# 将 T 转换为 long

typescript - 如何在子类中正确键入返回值( typescript )

c++ - 如果 malloc(STL 分配器等)请求分配 0 字节会发生什么

c - 从数组中读取两个字符作为C中的一个十六进制数