我目前正在使用教科书C: How to program 6/e学习 C 编程。
现在,在讨论数组的书中,它指出当将数组(不是字符数组,由于 '\0' 字符)传递给函数时,需要将数组中的元素数传递给功能也是如此
所以考虑到我的功能
int myfunct(int myary[], int numelements);
int myfunct(int *myary, int numelements);
假设 ary 已经声明了 10 个元素,并且我们现在在 main 函数中。
myfunct(ary, 10);
是(int numelements
必要的[在任何一种情况下],如果是,为什么)。这本书指出编译器应该知道要处理的元素的正确数量,但是这本书在几乎所有示例中都没有这样做,并且非常不一致。
还,
int myfunct(int myary[][10], int numrows, int numcolumns);
关于 numrows 和 numcolumns 的相同问题。
为了进一步说明:
#include <stdio.h>
void test(const int ary[]);
int main(void){
int myary[10] = {1,2,3,4,5,6,7,8,9,10};
test(myary);
return 0;
}
void test (const int ary[]){
int i;
for(i = 0; i<10; i++){
printf("The number in array element %d is: %d\n", i, ary[i] );
}
}
这段代码似乎可以在没有附加参数的情况下正确编译,但我不明白为什么书中会说我需要它们,许多网站也是如此。帮助!