기타/C++

[C++] 배열 쓸 때 참고하기

푸쿠이 2020. 5. 8. 13:00
기본 문법
int arData[10]; // 자료형 변수명[배열크기];

java, c# 처럼 int[10] arData; 였으면 자료형을 알아보는 것이 더 편했겠다. 옛날 언어라서 그런가보다.

 

참고 사항

1. 개수가 명확할 땐 배열을 쓴다.

 

 

2. 배열을 늘리거나 줄이지 말자. 

배열이 5칸인데, 7칸으로 늘린다 치면 
메모리에서는 2칸을 늘리는 게 아니라 7칸짜리를 새로 만들고, 복사하는 것이다. 5칸짜리는 삭제함. (속도가 느림)

늘리거나 줄일거면 배열말고 다른 거 쓰자.

 

 

3. 배열 인덱스 변수를 선언했을 때, -1로 초기화 하지말자.

잘못된 메모리에 접근할 수 있다. (버그 가능성)

 

초기화는 0으로 하고, 배열의 0번째에는 디폴트 값을 넣어놓자.

가위바위보를 예시로 하면,
0 : 안 냄
1 : 가위
2 : 바위
3 : 보
이런 느낌으로 해야 -1 초기화로 인한 버그를 예방할 수 있다.
메모리를 더 쓰기는 하지만, 속도에는 별 의미없다.

 

 

4. 배열 길이는 잃어버리면 안된다.

c#, java는 Length를 이용해서 알 수 있지만,
c++은 배열 길이를 잃어버리면 안된다.

지역변수일때는 sizeof를 이용해서 배열 길이를 알아낼 수는 있지만,
포인터로 쓰일 경우에는 포인터 변수 크기가 항상 4바이트이기 때문에 이걸 사용해서 연산하면 실수할 수 있다.

int arData[5]; 
sizeof(arData) / sizeof(int) // 이런 건 사용하지 말자

 

 

5. sizeof 쓰게 된다면 절대로 변수명을 쓰지 말자. (실수 방지)

int nData{}; 
sizeof(nData) // 틀림 
sizeof(int) // 맞음 

int arData[5]{}; 
sizeof(arData) // 틀림 
sizeof(int) * 5 // 맞음