私は現在、テキスト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] );
}
}
このコードは、追加のパラメーターなしで正しくコンパイルされるようですが、本がなぜそれらが必要だと言っているのか理解できません。多くのサイトもそうです。ヘルプ!