c - 从 sizeof 返回的意外值
问题描述
我分配了一个数组a
4 个块(每个块的大小sizeof(int)
)。然后我尝试使用以下代码打印数组的长度:
int main() {
int *a = malloc(4 * sizeof(int));
printf("%d", sizeof(a)/sizeof(a[0]));
return 0;
}
一旦我运行了这段代码,它就会打印出来2
,尽管我期望4
. 为什么?
解决方案
sizeof
malloc
不是一个神奇的“我在这个指针中有多少空间”功能。您使用的习语仅适用于真正的数组,而不是作为数组取消引用的指针。在这里,它的意思是sizeof(int*)/sizeof(int)
,这显然没有用。
推荐阅读
- node.js - 环回应用程序中间件不工作 - 未找到匹配层错误
- azure - 在应用程序网关中添加带有目标(虚拟机)的后端池
- ansible - 无法从 Ansible 变量中搜索子字符串
- flutter - 在flutter中查询firestore:权限被拒绝,该怎么办
- windows - 是否可以在 Windows 中解密 DRM HLS 内容?
- c# - IConfigurationDbContext 上没有使用 Identity Server 4 的 SaveChanges 方法
- python - 如何在云中托管我的 Python 代码?IBM 或 AWS 或任何东西都可以
- html - HTML字符不为vue上的光标效果提供颜色
- r - R:如何模拟 PCA 数据
- javascript - 在 Stack.screen 上通过本机反应在一个变量中分配多个值