我知道有很多类似的问题和答案 但是,只是要确保在我的脑海里...
char abc1[] = "abc";
char abc2[] = "abc\0";
char abc3[] = {'a', 'b', 'c'};
char abc4[] = {'a', 'b', 'c', '\0'};
printf("%ld %ld %ld %ld\n", sizeof(abc1), sizeof(abc2), sizeof(abc3), sizeof(abc4));
printf("%ld %ld %ld %ld\n", strlen(abc1), strlen(abc2), strlen(abc3), strlen(abc4));
结果:
4 5 3 4
3 3 3 3
Q1。 abc1是否像abc4一样在数组末尾有\ 0?
(否则,为什么sizeof()返回4?)
Q2。如果可以,在abc2中是否不需要\ 0?
Q3。 abc3不好,因为strlen()会从数组中看到内存。是吗?