기본 데이터타입, 배열, 비트맵
1.기본 데이터 타입
크기(size)와 해석(inerpretation)이 존재
크기는 bit수 => long, long long, unsigned...
해석은 data type => char, int, float...
C언어 data type
char = 1바이트 = 8비트 = 256
int = 4바이트 = 32비트 = 4,294,967,296
signed = 부등호 표현
unsigend = 부등표현하지 않는 타입
java data type
유니코드를 포함한 char이기 때문에 C언어보다 높은 비트수를 가집니다.
아스키코드
포인터란?
메모리 상에 위치한 특정한 데이터의 (시작)주소값을 보관하는 변수
int p = 123 // 123 저장
int 123이 메모리 주소에 저장된 상태
메모리주소의 시작점 = 0x152839
int* p // p의 메모리시작주소를 가리킴
포인터 p 에 들어 있는 값 : 0x7fff894c8b3c
int 변수 a 가 저장된 주소 : 0x7fff894c8b3c
포인터의 장점
-
메모리 주소를 참조하여 배열과 같은 연속된 데이터에 접근과 조작 용이
-
동적 할당된 메모리 영역(힙 영역)에 접근과 조작 용이
-
한 함수에서 다른 함수로 배열이나 문자열을 편리하게 보낼 수 있음
-
복잡한 자료구조를 효율적으로 처리
-
메모리 공간을 효율적 사용
-
call by reference에 의한 전역 변수의 사용을 억제
포인터의 단점
-
포인터 변수는 주소를 직접적으로 컨트롤하기 때문에 예외 처리가 확실하지 않을 경우 예상치 못한 문제가 많이 발생. ( 널 포인트 같은 경우에 바로 접근할 경우 예외 발생)
-
선언만 하고 초기화를 하지않을 경우 쓰레기 주소를 가리키고 있기 때문에 사용에 주의해야 함.
-
포인터 변수는 주소를 직접 참조하기 때문에 의도하지않게 원본의 값이 수정 될 수 있다.
-
오류를 범하기 쉽고 기교적인 프로그램이 되기 쉽다.
-
프로그램의 이해와 버그 찾기가 어렵다.
-
메모리 절대 번지 접근 시 시스템 오류를 초래한다.
2. 배열
배열이란?
컴퓨터 메모리 상에 같은 타입의 변수를 연속적으로 여러 개를 한 꺼번에 정의할 수 있는 방법을 제공하고 있는데 이를 바로 배열(Array) 이라고 합니다.
ex) int형 자료 10개의 원소를 가지고 있는 배열
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
arr[3] = 4
arr[10] = ???
문자열
"abc" = {'a','b','c'} + null 4바이트 사용
2차원배열 형태
1차원배열형태
int arr [10] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}
2차원 배열형태
int arr[10][2] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}
int arr[10][2] = {
{0,1},
{2,3},
{4,5},
{6,7},
{8,9},
{10,11},
{12,13},
{14,15},
{16,17},
{18,19}
}
각 원소는 원소의 주소인 기저주소로부터 얼마나 떨어져있는지를 나타내는 오프셋으로 지정할 수 있다.
int arr[3] = 4
만약 char[3] = 25777 를 담는 다면?
3. 비트맵
17 => 00010001
8비트 => 00000001
17 and 8비트 => 00010001 AND 00000111 => 00000001
1이 하나
1개수만큼 왼쪽시프트 => 00000010 => 2
2번째에 위치한다!
Author And Source
이 문제에 관하여(기본 데이터타입, 배열, 비트맵), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@silentisland/기본-데이터타입-배열-비트맵저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)