이런 내용을 보게 되었고,
지금까지는 전역변수로 선언을 하고 초기화를 안해주면 알아서 초기화가 된다는걸로 생각을 했는데, 그때 초기화가 되면 뭘로 초기화가 된다는건지 궁금해졌다.
이 경우 초기값이 전부 NULL이어서 잘 작동한다고 주석을 써주었다.
지피티에 물어봤을때는 char형이므로 모두 0으로 초기화 된다고 하는데, 이걸 내가 직접 출력을 해보았을때
나오는것이 없었다.
#include <bits/stdc++.h>
using namespace std;
char board[22][22];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
for (int i = 0; i < 22; i++) {
for (int j = 0; j < 22; j++)
cout << board[i][j] << " ";
cout << "\n";
}
}
코드를 이렇게 작성해서 출력을 해보았을때의 결과물이
이런 형식으로 공백이 크게 나왔다. 아마 22 * 22 사이즈로 표현이 되고 전부 공백으로 표현되어있을 것으로 보여진다.
#include <bits/stdc++.h>
using namespace std;
char board[22][22] = {1,1,2};
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
for (int i = 0; i < 22; i++) {
for (int j = 0; j < 22; j++)
cout << board[i][j] << " ";
cout << "\n";
}
}
이런 코드를 만들어서 출력을 해보면 더욱 재미난 결과물이 나온다.
이런식의 형태를 볼 수 있다. 결국 앞에 3개의 칸에 내가 int값으로 적어 넣은 숫자에 해당하는 char가 들어간것으로 보여진다. 그럼 전체를 0으로 매꾼 경우는 어떻게 될까.
#include <bits/stdc++.h>
using namespace std;
char board[2][2] =
{ {0,0},
{0,0} };
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++)
cout << board[i][j] << " ";
cout << "\n";
}
}
이런식으로 char에 0으로 메워서 코드를 실행해보면,
이런식으로 다시 공백이 나온다.
이와 관련하여서 char의 초기화와 null등에 관한 정보를 검색하며 보게 된 블로그를 같이 첨부한다.
http://khgkjg12.blogspot.com/2016/07/c_31.html
변수와 배열의 자동 초기화(C++)
변수들이 전역으로 선언 되었는지 지역으로 선언되었는지에 따라서 그 변수가 자동초기화가 될수도 있고 안될수도 있다. 먼저 전역변수 일때 부터 보자. 전역변수일때 변수들은 전역변수로 썼
khgkjg12.blogspot.com
딱 내가 현재 하고 있는 상황에서 "char에서의 0은 null이다" 에 해당하는 상황이라고 보여진다.
일단은 이 글을 읽어보고, 전역변수로 초기화를 하지 않은 bool은 0으로 false, int는 0, char는 0으로 null이라고 생각하면 될듯하다.
'알고리즘 > BOJ' 카테고리의 다른 글
c++ next_permutation을 활용해서 조합을 뽑는 방법. (0) | 2023.04.24 |
---|---|
c++ N-Queen 문제에서 영어로 row와 column이 헷갈려서 기억하려고 작성. (0) | 2023.04.24 |
c++ 에서 string을 받는 함수에 대해서 (boj 17478) (0) | 2023.04.22 |
c++ 메모리 초과가 떠서 int를 몇개를 잡으면 128mb가 넘나 알아보았다. (0) | 2023.04.21 |
c++ 아주 큰 수를 다룰 경우 __int128에 대하여. (0) | 2023.04.21 |