strlen(null_terminated_array) printf( "%zu" , strlen(null_terminated_array)) 打印包含''的size_t



如果我有一个char *null_terminated_array="hello",我认为printf("%zu",strlen(null_terminated_array))应该打印5(不包括'')而不是6(包括'')。

是的,这就是你所期望的。如果您想在数组上使用sizeof而不是strlen,请注意:

char *null_terminated_array="hello";
char char_array[6]="hello";    
printf("null_terminated_array = %sn",null_terminated_array);
printf("strlen(null_terminated_array) = %zun",strlen(null_terminated_array));
printf("sizeof(null_terminated_array) = %zun",sizeof(null_terminated_array));
printf("n");
printf("char_array = %sn",char_array);
printf("strlen(char_array) = %zun",strlen(char_array));
printf("sizeof(char_array) = %zun",sizeof(char_array));

对于我运行它的平台,它给出

null_terminated_array = hello
strlen(null_terminated_array) = 5
sizeof(null_terminated_array) = 8
char_array = hello
strlen(char_array) = 5
sizeof(char_array) = 6

sizeof(null_terminated_array)的明显差异是使用32位块(依赖于平台)进行自动内存分配。

最新更新