C - 在函数中传递数组并获取其大小
C - passing array in function an get its size
我是 Python 用户已经有一段时间了,现在尝试进入 C。虽然 Python 为我做了很多后台工作,但我现在不得不在 C 中编写很多代码更多 'BASIC' 方式。我喜欢它,...但它很难。
重要的部分从这里开始
我非常喜欢 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 中只有通过循环 truth it 才有可能。这是我要添加到 'print_array' 函数的代码。但由于 'wrong' 大小,它不是我如何看待它的。
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);
我是 Python 用户已经有一段时间了,现在尝试进入 C。虽然 Python 为我做了很多后台工作,但我现在不得不在 C 中编写很多代码更多 'BASIC' 方式。我喜欢它,...但它很难。
重要的部分从这里开始
我非常喜欢 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 中只有通过循环 truth it 才有可能。这是我要添加到 'print_array' 函数的代码。但由于 'wrong' 大小,它不是我如何看待它的。
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);