gpt4 book ai didi

c++ - 函数参数中的 "type name[size]"是什么意思?

转载 作者:行者123 更新时间:2023-12-02 16:07:10 28 4
gpt4 key购买 nike

我在分析 SKIA 源代码时发现了这个:

constexpr unsigned kMaxBytesInUTF8Sequence = 4;
// ...
SK_SPI size_t ToUTF8(SkUnichar uni, char utf8[kMaxBytesInUTF8Sequence] = nullptr);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

我知道(如果我错了请原谅)char utf8[kMaxBytesInUTF8Sequence] 会衰减到 char*char utf8[] 或只是 char* utf8

因此,我认为这样写是没有意义的,对吧?

最佳答案

具有数组类型的函数参数由编译器调整为指向数组元素类型的指针。

因此这些函数声明

SK_SPI size_t ToUTF8(SkUnichar uni, char utf8[kMaxBytesInUTF8Sequence] = nullptr);
SK_SPI size_t ToUTF8(SkUnichar uni, char utf8[10] = nullptr);
SK_SPI size_t ToUTF8(SkUnichar uni, char *utf8 = nullptr);

声明同一个函数。

这个参数声明

char utf8[kMaxBytesInUTF8Sequence]

用于 self 说明,指定传递的数组必须不大于 kMaxBytesInUTF8Sequence 元素,否则用户可以传递空指针。

关于c++ - 函数参数中的 "type name[size]"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69108136/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com