C言語を「スッキリわかるC言語」で学習中です。
c
1コード 2int x[5]={1}; //配列の中身:1 0 0 0 0…(1) 3 4char y[10]=“hello”; //hello 0 ????…(2) 5 6char z[5]={1}; // ?…(3) 7
上記の(1)のようにint[]型を初期化する場合、明示した部分以外は0で初期化されると学びました。
しかし、入門書を読んでいくと(2)の場合は終端以降の値は決まらないと書いてありました。
“hello”と初期化しているのだからint[]型のように残りは0になるのではと思ったのですがなぜこのようになるのでしょう?
もし、char[]型が特殊なのであれば(3)の中身も1以降は0で初期化されないのでしょうか?
実際にこれらの文を試してみたのですが私の使っている環境だと?の部分は全て0になってしまうのでわかりませんでした。回答よろしくお願いします。
入門書に書いてある内容↓
#include<stdio.h> typedef char String[1024]; int main(void) { String str="hello"; for(int i=0; i<10; i++){ printf("%d, ",str[i]); } return 0; } //結果:104, 101, 108, 111, 0, (24, 82, 124, 41) 実行する環境によって違う
回答1件
あなたの回答
tips
プレビュー