疑問
charの配列(piyo[])ではヌル文字を最後に入れるが、intの配列(hoge[])ではヌル文字は入れないのになぜ最後のヌル文字分が空いているのかがわからないです。
該当のソースコードで
piyo[0] = 'p'
piyo[1] = 'i'
piyo[2] = 'y'
piyo[3] = 'o'
piyo[4] = '\0'
hoge[0] = 0
hoge[1] = 1
hoge[2] = 2
hoge[3] = 3
hoge[4] =(不定値) <- ヌル文字用?
となっているが
sizeof(piyo) = 5 <- 4文字 + ヌル文字
sizeof(hoge) = 16
つまりhoge[0]~hoge[3]のint4つ分でhoge[4]が含まれていない
hoge[4]はいったい何のためにあるのかが知りたいです
あとなぜヌル文字が%cで表示できないのかも知りたいです。
お願いします。
該当のソースコード
c
1#include <stdio.h> 2#include <stddef.h> 3 4int main(void) 5{ 6 int hoge[4] = {0, 1, 2, 3}; 7 size_t hoge_size = sizeof(hoge); 8 printf("hoge size is %lu\n", hoge_size); 9 10 int i; 11 for (i = 0; i < (sizeof(hoge)/sizeof(int) + 1); i++) 12 printf("hoge[%d] is %d\n", i, hoge[i]); 13 14 char piyo[] = "piyo"; //= {'p', 'i', 'y', 'o', '\0'}; 15 size_t piyo_size = sizeof(piyo); 16 printf("piyo size is %lu\n", piyo_size); 17 18 for (i = 0; i < sizeof(piyo)/sizeof(char); i++) 19 printf("piyo[%d] is %c\n", i, piyo[i]); 20 21 return 0; 22}
結果
hoge size is 16
hoge[0] is 0
hoge[1] is 1
hoge[2] is 2
hoge[3] is 3
hoge[4] is -979911936
piyo size is 5
piyo[0] is p
piyo[1] is i
piyo[2] is y
piyo[3] is o
piyo[4] is
補足情報
コンパイラー:gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
OS: Windows10 / Windows Subsystem for Linux (Ubuntu 7.4.0)
回答1件
あなたの回答
tips
プレビュー