sizeof(<array of =“”strings =“”>)不断返回8

时间:2018-04-01 00:41:25

标签: 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。

发生了什么?

1 个答案:

答案 0 :(得分:1)

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

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


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

输出:

12