반응형
[C/C++] 배열의 여러가지 사용 방법
#include <stdio.h>
#include <typeinfo>
void TestArrNameAddress(int arr[])
{
// 배열의 이름은 주소값을 넘겨줌,
// 그래서 arr의 값을 변경하면 메인에 있던 값도 변경됨
printf("%d\n", sizeof(arr)); // 포인터의 크기가 나옴
printf("%s", typeid(arr).name()); // arr의 데이터 타입은 int * __ptr64
}
int main()
{
// 여러가지 초기화 방법
int arr1[5] = {}; // 크기5, 모두 0으로 초기화
int arr2[5] = { 1, 2 }; // 크기5, 앞 2개는 1, 2를 가지고 나머지 3개는 0으로 초기화
int arr3[5]; // 크기5, 쓰레기값 들어가 있음
int arr4[] = { 1, 2, 3, 4, 5 }; // 크기5, 순차적으로 값 매김
arr4[0] = 2; // 직접적으로 넣어주기
char arr5[5] = "LOVE"; // 'L', 'O', 'V', 'E', null
char arr6[4] = "LOV"; // 문자 배열의 제일 마지막은 null문자(0)가 들어감 "LOVE"로 초기화 안됨
arr6[3] = 'E'; // 출력시 "LOVE" 출력 후 null문자(숫자 0)을 만날 때 까지 (쓰레기값 포함)출력 됨
TestArrNameAddress(arr1); // 배열명은 주소값을 가지고 있다.
int length = sizeof(arr1) / sizeof(int); // 배열명의 크기를 확인하면 전체 크기를 알 수 있다. (데이터형의 크기 * 배열의 크기)
// int는 64bit 컴파일러에서 4byte를 차지하고 있으므로 arr1[5] 는 4byte * 5 = 20의 크기를 갖는다.
// 20 / 4byte = 배열의 크기
// 위 방법을 매개변수로 전달해서 계산하면 안됨, 매개변수로 전달된 배열은 컴파일러가 크기를 가늠할 수 없다.
}
반응형
'Programming > C, C++' 카테고리의 다른 글
C++ 숫자 야구게임 만들기 (0) | 2022.12.07 |
---|---|
C++ 지역변수, 전역변수, 정적변수 (0) | 2022.12.07 |
C++ Call By Value, Call By Reference, Call By Address (0) | 2022.12.07 |
C++ Up&Down (업앤다운) 게임 만들기 (0) | 2022.12.06 |
C++ 별 다이아몬드 찍기 (0) | 2022.12.06 |