arrays - 为什么A的大小等于8而不是4?
问题描述
据我所知,作为函数参数传递的数组并未完全复制,而只是指向数组中第一个元素的地址的指针。为了看到它的实际效果,我写了一段代码,我在互联网上找到并期望sizeof(A)
inSumOfElements()
应该是 4。不知何故它是 8。我错过了什么?
#include <stdio.h>
int SumOfElements(int A[]) {
int i, sum = 0;
int size = sizeof(A) / sizeof(A[0]);
printf("SOE - size of A: %d, size of A[0]: %d\n", sizeof(A), sizeof(A[0]));
for (i=0; i < size; i++) {
sum += A[i];
}
return sum;
}
int main () {
int A[] = {1, 2, 3, 4, 5};
int total = SumOfElements(A);
printf("main - size of A: %d, size of A[0]: %d\n", sizeof(A), sizeof(A[0]));
//printf("Sum of elements = %d\n", total);
}
解决方案
在64 bits
机器上,指向变量的指针是 8 个字节。这取决于您使用的架构,请参阅这篇文章。
推荐阅读
- python - 正则表达式查找子字符串,然后根据分隔符拆分
- javascript - Bootstrap 不加载角度 6
- python-3.x - ValueError:无法为具有形状“(?,784)”的张量“x:0”提供形状(784,)的值
- project-reactor - 如何将数据向下传递到反应链
- apache-spark - 如何通过数据帧操作保留分区
- java - 两个类具有相同的 XML 类型名称……”
- python-3.x - Discord Python:如何在事件下添加冷却命令
- git - 如何使用 Git Parameter 插件从多个存储库加载分支列表?
- html - 使用 CSS Flexbox 旋转 HTML 文本输入
- javascript - 为什么这 == 窗口?