首页 > 解决方案 > 为什么我不能使用函数来查找数组的长度?

问题描述

我目前正在尝试实现一个查找数组长度的函数(有点类似于 Python 的内置函数)。

这是我的实现:(不要介意其他“包含”)

#include <iostream>
#include "List.hpp"
#include "testClass.hpp"
#include "Coordinate.hpp"

int len(int arr[]);

int main() {
    int arr[3] = {1, 2, 3};
    std::cout << len(arr) << std::endl;
}

int len(int arr[]) {
    return sizeof(arr)/sizeof(arr[0]);
}

但这会产生

main.cpp: In function 'int len(int*)':
main.cpp:16:22: warning: 'sizeof' on array function parameter 'arr' will return size of 'int*' [-Wsizeof-array-argument]    
     return sizeof(arr)/sizeof(arr[0]);
                      ^
main.cpp:14:17: note: declared here
 int len(int arr[])
             ^

但是,复制+粘贴leninto的正文main

#include <iostream>

int len(int arr[]);

int main() {
    int arr[3] = {1, 2, 3};
    std::cout << sizeof(arr)/sizeof(arr[0]) << std::endl;
}

int len(int arr[]) {
    return 0;
}

作品 a 产生预期的结果:3.

我的问题是,为什么后者有效,而前者无效?我将如何重新实现前者来打印3

编辑:阅读以下评论后,很明显为什么这不起作用,并且没有办法做到这一点,除非我使用一个向量,它已经有一个.size()方法。

标签: c++

解决方案


推荐阅读