如何解决C-在函数中传递数组并获取其大小
我很长时间以来都是Python用户,现在尝试使用C。尽管Python对我有很多背景知识,但我现在必须以一种更加“基本”的方式在C中进行编码。我喜欢,但是很难。
重要的部分从这里开始
我真的很喜欢Python中的len()方法来获取数组的长度。但是在C语言中,似乎我必须寻找一个数组的大小(以字节为单位),然后将其除以一个元素的大小(以字节为单位)以获取孔数组的长度。 如果有一种简单或更通用的方法,我想在这里解决。但是我想了解为什么以下程序为我的数组'a'打印不同的大小。
#include <stdio.h>
void print_array(int a[]){
printf("size of 'a' in the function is: %d\n",sizeof(a));
}
int main(void){
int a[5] = {0,2,4,8,16};
printf("size of 'a' before the function is: %d\n",sizeof(a));
print_array(a);
return 0;
}
输出如下:
size of 'a' befor the function is: 20
size of 'a' in the function is: 8
至少我想编写一个打印和排列我不知道长度的函数。我对C的理解只有通过循环真理才能实现。这是我要添加到“ print_array”函数中的代码。但是由于大小错误,这并不是我如何看待它。
int loop = sizeof(a)/sizeof(a[0]);
for(int i = 0; i <= loop; i++){
printf("Array[%d] = %d\n",i,a[i]);
}
输出(缺少元素3和4):
Array[0] = 0
Array[1] = 2
Array[2] = 4
非常感谢您的解释!
解决方法
在C语言中,您不仅必须传递衰减为指针的数组,还必须传递数组的大小。在C语言中,通用约定是(array,size):
void print_array(int a[],size_t s) {
for (size_t i = 0; i < s; ++i) {
... a[i] ...
}
}
在哪里这样称呼:
print_array(a,5);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。