c++ - 为什么我不能使用函数来查找数组的长度?
问题描述
我目前正在尝试实现一个查找数组长度的函数(有点类似于 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[])
^
但是,复制+粘贴len
into的正文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()
方法。
解决方案
推荐阅读
- node.js - 调度软件与客户端的交互
- mysql - 无法在我的查询请求中显示额外的属性
- python - 从字典创建多个 DataFrame
- bash - 如何将多个变量分配给固定大小的“表”输出
- c++ - 如何消除 Qt 折线图中顶点处的弧线?
- django - 如何在 django-oscar 结帐中将用户重定向到正确的页面?
- racket - 如何在球拍的正方形内找到一个点?
- vue.js - 如何在哈巴狗中使用 moment.js?属性或方法“时刻”未在实例上定义,但在渲染期间被引用
- hugo - 如何检测我正在运行 hugo 的内置服务器?
- python - gspread Python如何设置复选框的值