私はコンパイルしてC、char配列にランダムな文字があるのはなぜですか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char func[16];
for(int i = 0; i < sizeof(func); i++) {
printf("Char %d in func is %c\n", i, func[i]);
}
return 0;
}
に次のように実行すると、私はこの取得:
Char 0 in func is P
Char 1 in func is
Char 2 in func is @
Char 3 in func is
Char 4 in func is
Char 5 in func is
Char 6 in func is
Char 7 in func is
Char 8 in func is p
Char 9 in func is
Char 10 in func is @
Char 11 in func is
Char 12 in func is
Char 13 in func is
Char 14 in func is
Char 15 in func is
を、私は異なる時間にコンパイルするときに、私は私のchar型の配列に異なるランダムな文字を取得します。これは、ポインタが削除されたメモリ内のランダムなASCII文字を検出するためですが、実際の情報はヒープに残っているためです。
forループで配列内のすべてをnullに設定する必要がありますか、それを行う関数はありますか?
ヒープには何もありません – StoryTeller
オブジェクトの値を使用するための未定義の動作です。 – EOF
初期化されていないデータは、初期化されていないデータです。 –