带引号或花括号分配时的char数组

时间:2018-06-23 05:44:30

标签: arrays null char allocation

我知道有很多类似的问题和答案 但是,只是要确保在我的脑海里...

    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()会从数组中看到内存。是吗?

0 个答案:

没有答案