C 语言中获取数组长度的方法

C 语言中获取数组长度的方法

写了一段求和代码如下

#include

int main() {

int Sum(int array[], int n);

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

cout << Sum(a, 10) << endl;

return 0;

}

int Sum(int array[], int n) {

int sum = 0;

for (int i = 0; i < n; i++) {

sum += array[i];

}

return sum;

}

但是这样写有个问题,如果数组长度不是 10,怎么自动获取呢?

我在网上找了个获取数组长度的方法,如下

int main(void)

{

int a[10] = {0};

int cnt = sizeof(a) / sizeof(a[0]);

printf("cnt = %d\n", cnt);

return 0;

}

然后改写 Sum 函数

int Sum(int array[]) {

int sum = 0;

int n = sizeof(array) / sizeof(array[0]);

for (int i = 0; i < n; i++) {

sum += array[i];

}

return sum;

}

然而打印的时候发现结果不对,因为

c 传 数组过去是 指针变量,指针的长度是 4

sizeof 是求对象大小的 array 是个地址为 8 字节 array[0] 是一个 int 4 字节 所以除了是 2

那到底怎么获取数组的长度呢?

其实我一直很疑惑,C 在函数外可以获取到数组长度那么在函数内怎么获取呢?

大佬觉得我这问题很蠢,新手也觉得我这个问题很蠢,那么我到底应该怎么写呢?

int Sum(int array[]) {

int sum = 0;

while(array != NULL) {

sum += *array;

array++;

}

return sum;

}

后记

https://www.scaler.com/topics/length-of-an-array-in-c/

https://www.techiedelight.com/find-size-of-an-array-c/

https://iq.opengenus.org/length-of-array-in-c/

https://www.digitalocean.com/community/tutorials/find-array-length-in-c-plus-plus

https://www.scaler.com/topics/length-of-an-array-in-c/

http://c.biancheng.net/view/1993.html

https://blog.csdn.net/we1583004we/article/details/80663180#:~:text=C%E8%AF%AD%E8%A8%80%E6%97%A0%E6%B3%95%E7%9B%B4%E6%8E%A5%E8%8E%B7%E5%8F%96,%E6%95%B0%E5%B0%B1%E6%98%AF%E6%95%B0%E7%BB%84%E7%9A%84%E9%95%BF%E5%BA%A6%E3%80%82

http://c.biancheng.net/view/186.html

https://www.cnblogs.com/lyqf/p/10720090.html

相关推荐

详解三种方法更改手机应用图标,让你的手机界面更个性化
求助!深圳农商行薪资待遇
36365线路检测中心

求助!深圳农商行薪资待遇

📅 08-02 👁️ 8430
4000毫克等于多少克
36365线路检测中心

4000毫克等于多少克

📅 09-12 👁️ 4497