c - 为什么 C 允许函数返回本地声明的指针而不是本地声明的数组?
问题描述
在这里,我有一个函数 f(),它在本地定义了一个整数 x 和一个指向它的指针,pointer_x。它返回那个指针。然后我尝试取消对指针的引用,它仍然为我提供了该指针指向的正确整数。我的问题是,如果函数在本地声明一个数组并返回该数组是非法的(由于在该函数返回时释放了堆栈帧),为什么函数声明一个指针并返回该指针是合法的?
我的印象是数组基本上是一个指针。
int *f();
int main(void){
int *test;
test = f();
printf("%d", *test); //prints 0
}
int *f(){
int x = 0;
int *pointer_x = &x;
return pointer_x;
}
解决方案
推荐阅读
- c# - 使用包含字段将 XSD 架构转换为 C# 的问题
- asp.net-core - 将 IIS 安装到 Windows 服务器
- python - 你如何使用python从json文件中提取一些数据
- javascript - Feathers js - 不能在地图功能中抛出错误
- optimization - 使用 kaniko 进行 Google 云构建优化
- rust - 创建全局字体缓存
- javascript - NodeJS mysql connection.query回调没有将结果记录到控制台?
- r - 为两个变量的一系列值创建“if...then”语句的代码
- r - 有没有更有效的方法在 R 中创建权重?
- php - Paypal IPN:如果我的听众在收到 IPN 后没有发回确认,会发生什么?