ここから本文です

C言語にて、char a[10]={'\0'};はa[0]のみヌル文字で初期化されますか?それとも10...

i9a********さん

2019/8/1019:10:01

C言語にて、char a[10]={'\0'};はa[0]のみヌル文字で初期化されますか?それとも10桁の全部の文字列にヌル文字が設定されますか?

gccでgdbでみた限り全てヌル文字が設定されていましたが、それはコンパイラに依存するものなのでしょうか?

閲覧数:
50
回答数:
4

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

n2q********さん

2019/8/1019:18:47

「全部の文字列にヌル文字が設定」

です。




「コンパイラに依存するものなのでしょうか?」

じゃないです。



《参考》

初期値が無い分については 0 になります。

つまり、a[0] には指定された '\0' が入ります。そして、a[1]~a[9] には指定が無いため 0 が('\0' が)入ります。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

ikt********さん

2019/8/1108:23:04

配列 a の全要素が 0(zero) に初期化されます。

C言語の標準規格の決め事です。
標準規格に従ってるCコンパイラなら、必ずそうなります。

標準規格制定前の大昔コンパイラは、忘れて良いかと、

her********さん

2019/8/1102:37:52

>それはコンパイラに依存するものなのでしょうか?

今は入手はソースレベルしかないですが、
大昔のCコンパイラはa[0]のみ初期化です。

プロフィール画像

カテゴリマスター

あみやさん

2019/8/1100:14:48

char a[10]={ }
この形でa配列に何かを設定した場合、そこに何があるかに関係なく、
余った部分は0に設定されます。

char a[10]={'\0'};
とした場合は、初めの文字は'\0'になり、それ以外の9文字は全て0になります。
(結果として全て0になる)

char a[10]={'a','b'};
例えばこうすると、最初の2文字は'a''b'に、3〜10文字目は0になります。
0になるのは、別にヌル文字になる訳ではなく、ただ0になります。(内容的には同じですが)
charに限らずint等でも同じです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる