重複の可能性:
C sizeof 渡された配列
sizeof(param_array) がポインターのサイズであるのはなぜですか?
私はCが初めてで、型システムに少し混乱しています。文字列内の小文字の数を出力するコードを書き込もうとしていますが、配列の int サイズの部分だけが cntlower 関数に渡されます。どうしてこれなの?
#include "lecture2.h"
int main(void){
int lowerAns;
char toCount[] = "sdipjsdfzmzp";
printf("toCount size %i\n", sizeof(toCount));
lowerAns = cntlower(toCount);
printf("answer %i\n", lowerAns);
}
int cntlower(char str[]) {
int lowers = 0;
int i = 0;
printf("str size %i\n", sizeof(str));
printf("char size %i\n", sizeof(char));
for(i = 0; i < (sizeof(str)/sizeof(char)); i++) {
if(str[i] >= 'a' && str[i] <= 'z') {
lowers++;
}
}
return lowers;
}
現在の出力は次のとおりです。 toCount size 13 str size 4 char size 1 answer 4
この理由が明らかな人もいると思いますが、残念ながら私には当てはまりません!