sizeof和strlen可以说是C/C++/OC笔试必考题。
直接上代码结果记录下(64位系统):
(1)字符数组,指定长度
char ch_arr[20] = "123";
printf("%d\n", sizeof(ch_arr));
printf("%d\n", sizeof(ch_arr[0]));
printf("%d\n", strlen(ch_arr));
运行结果:
20
1
3
char ch_arr[] = "123";
printf("%d\n", sizeof(ch_arr));
printf("%d\n", sizeof(ch_arr[0]));
printf("%d\n", strlen(ch_arr));
运行结果:
4
1
3
(3)将字符数组作为参数传递给函数(此时字符数组退化成字符指针)
void test(char *str)
{
printf("Test\n");
printf("%d\n", sizeof(str));
printf("%d\n", strlen(str));
}
int main(int argc, const char * argv[])
{
char ch_arr[] = "123";
test(ch_arr);
}
运行结果:
Test
8
3
(4)字符指针
char *ch_ptr = "123";
printf("%d\n", sizeof(ch_ptr));
printf("%d\n", strlen(ch_ptr));
运行结果:
8
3
(5)各种指针
int x = 10;
char c = 'a';
double d = 1.0;
float f = 2.0f;
long l = 100L;
int *pInt = &x;
char *pChar = &c;
double *pDouble = &d;
float *pFloat = &f;
long *pLong = &l;
printf("%d\n", sizeof(pInt));
printf("%d\n", sizeof(pChar));
printf("%d\n", sizeof(pDouble));
printf("%d\n", sizeof(pFloat));
printf("%d\n", sizeof(pLong));
运行结果:
8
8
8
8
8