c - 为什么记忆不需要指针?
问题描述
例如,在这个工作正常的代码中,使用数组而不是指向数组的指针完成了记忆。(int mem[] 而不是 int* mem)
int fibonacci(int n,int mem[]){
if(n < 3)
return 1;
if(mem[n])
return mem[n];
mem[n] = fibonacci(n - 1, mem) + fibonacci(n - 2, mem);
return mem[n];
}
int climbStairs(int n){
int mem[50] = {0};
return fibonacci(n + 1, mem);
}
我不明白,当其中一个函数返回时,返回函数的调用者函数如何将数据保存到前一个 mem[n]。函数返回时不应该删除函数数组吗?在该函数返回之后,调用者函数调用的另一个函数如何具有该值?
注意:这是 leetcode 中爬楼梯的解决方案。我写的。
解决方案
在函数参数中使用[]
时,它是一个指针。
int foo(int x[])
和
int foo(int *x)
是 100% 等效的。
但是,这将是另一回事:
int foo(int x[10])
推荐阅读
- python - Python - Tabula - 字体中使用的 OpenType 布局表未在 PDFBox 中实现,将被忽略
- laravel - laravel中会话超时时如何触发事件处理程序?
- python - 用于获取没有特定标签的实例名称的 Lambda 脚本
- css - 一个组件中的样式优于另一个组件中的骑乘样式
- python - 在databricks pyspark中嵌套json到tsv
- flutter - Flutter 的 WebView - 如何允许在初始 URL 上发布数据?
- amazon-web-services - CodeDeploy 本地注册失败并在 Amazon Lightsail 上出现 AccessDeniedException
- flutter - 如何避免 SnackBar 内的列占据 100% 的高度
- ios - 我无法安装我的项目 pod 收到此错误
- javascript - 如何修复 React 项目中的“TypeError:无法读取未定义的属性‘继承’”?