gpt4 book ai didi

c++ - 为什么编译器不在参数中传递数组 char *arr[] 的大小?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:39 24 4
gpt4 key购买 nike

为什么编译器不在参数中传递数组 char *arr[] 的大小?我想获取通过参数传递的数组的大小,但我猜它不起作用,因为即使 char *a[] 也是 char ** 我的问题是为什么会这样我能让它发挥作用吗?

#include <stdio.h>
#include <stddef.h>
#include <stdio.h>

template<class T, size_t len>
constexpr size_t lengthof(T(&)[len])
{
return len;
}
void printarr(const char *a[]);

int main()
{
const char *a[] = { "aba", "bd", "cd" };
printarr(a);
}

void printarr(const char *a[])
{
for(size_t i = 0, c = lengthof(a); i < c; i++) {
printf("str = %s\n", a[i]);
}
}

最佳答案

您可以使用您在 lengthof 函数模板中使用的相同技巧使其工作。

template<size_t len>
void printarr(const char* (&a)[len])
{
for(size_t i = 0, c = lengthof(a); i < c; i++) {
printf("str = %s\n", a[i]);
}
}

关于c++ - 为什么编译器不在参数中传递数组 char *arr[] 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22739456/

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