可能重复:
C sizeof a passed array
为什么 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
我相信这对你们中的一些人来说是显而易见的,但不幸的是,它不适合我!