일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Binary
- preprocessing
- flutter
- memory
- Android
- parameter
- file access
- aduino
- Unity
- Contour
- Read
- java
- UNO
- APP
- Class
- sensor
- public
- Encapusulation
- inheritance
- wpf
- digitalRead
- mfc
- SERIAL
- compare
- Barcode
- stream
- atmega328
- length
- Pointer
- Overloading
- Today
- Total
목록Pointer (14)
폴크(FOLC)
# 함수와 변수를 포함한 확장된 구조체 형태 ( C 언어의 구조체의 확장 개념 ) > 사용자 정의 타입 ( class 키워드 이용 ) > 객체 지향 개념의 중심 ( 상태와 행동 ) > 추상화, 갭슐화, 은닉화, 상속성, 다형성 등의 특징을 갖음 > 객체 : 사용자 정의 타입을 설계해 놓은 상태 ( 선언 하지 않은 상태 ) > 인스턴스 : 사용자 정의 타입의 객체를 선언하여 메모리에 올려놓은 상태 - 메모리에 독립된 공간에서 관리됨 # 기본 형태 class 객체 이름 { 접근 제어 지시자( private, protected, public) : 변수 - int AAA; 함수 원형 - int BBB(int CCC); 접근 제어 지시자( private, protected, public) : 함수 원형 - voi..
# Pointer 의 개념이 없다. 하지만, 주소 또는 참조의 개념은 있다. > '*' 문자를 사용하지 않음. > 람다식을 이용 # 널 ( null ) > 모든 상태의 기본값 > 아무것도 가르키지 않는 상태값 ( 값이 없는 상태 ) > 정의 되지 않은 상태 ( 초기화 되지 않은 상태 ) # 값에 의한 전달 ( call by value ) > 클래스가 아닌 자료형 > 전달하는 변수의 값을 호출되는 함수의 매개변수에 복사(copy) > 메모리 영역이 공유되지 않음. # 참조에 의한 전달 ( call by reference ) > 클래스 > 전달하는 변수를 호출되는 함수의 매개변수에 주소 복사(memory address) > 메모리 영역이 공유
# 함수 디폴트 파라미터 > 함수에 파라미터를 전달하는 기본값을 설정 > 함수 원형에만 지정할 수 있다. > 우선 순위 위치 순서대로만 지정할 수 있다. ( 우->좌 ) > 별도위치만 지정할 수 없다. # 함수 포인터 > 함수의 이름이 곳 포인터가 된다. ( 시작 주소 ) > 함수의 시작 주소를 가리키는 상수 ( 값 변경 불가 ) # 함수 포인터 선언 > typedef, auto 키워드 이용 > typedef void (*functionptr)(void); # 함수 오버로딩 ( 다형성 ) > 함수 이름은 동일하고 파라미터 개수와 리턴값이 다름 ( 시그니처 ) # 함수 오버라이딩 ( 다형성 - 상속 관련 ) > 함수 이름과 파라미터 개수와 리턴값이 같음 ( 재정의 ) > 부모의 함수와 동일한 이름을 갖는 ..
# 구조체 > 사용자 정의로 생성된 타입 ( 여러 자료형의 모임 ) > 멤버 변수 : 구성되는 자료형 변수 > 구조체 안에 구조체를 선언 가능 ( 중첩 ) > 크기 : 전체 자료형의 크기들의 합 # 형태 > struct 기본이름 > { > int ABC; > ... > }; > struct > { > int ABC; > ... > } 새로운이름; - 이름은 생략이 가능하지만 생량하는 경우에는 새로운 이름을 이용 - typedef 기존이름 변경이름; 형태로 새로운 이름으로 재정의 가능 # 멤버 변수 접근 > .연산자를 이용해서 접근 > 초기화 할때는 { } 와 .연산자를 이용 > 초기값을 설정하지 않은 경우에는 0으로 자동 초기화 # 생성 및 사용 > 구조체이름 stDEF; > stDEF.ABC = 111..
# 물리적인 메모리 영역에 source code 가 load 되고 프로그램에서 사용하는 변수들과 메모리 공간을 할당 > 코드 영역 : 실행 프로그램 소스 코드가 저장되는 공간 - 실행 시점에 결정 > 데이터 영역 : 전역/정적 변수들이 저장되는 공간 - 컴파일 시점에 결정 > 스택 영역 : 지역/매개 변수들이 저장되는 공간 - 컴파일 시점에 결정 > 힙 영역 : User 가 직접 관리 하는 공간 ( 생성/삭제 ) - 실행 시점에 결정 # 메모리 할당1 > User 에 의해서 힙 영역에 특정 공간을 관리하기 위한 요청이 발생 > new 명령어를 이용해서 할당 받고 delete 명령어를 이용해서 해제 > byte 단위로 전체 크기를 설정 > return 값은 첫번째 주소값 ( pointer ) # 메모리 할..
# 널 포인터 ( null pointer ) > 아무것도 가르키지 않는 포인터 > 포인터 변수를 0 으로 초기화 하거나 NULL 로 초기화 > C++11 이상에서는 nullptr 로 초기화 # 비자료형 포인터 ( void pointer ) > 주소값만 저장 가능 > 포인터 연산이나 메모리 참조는 할 수 없다. > 자료형이 없는 포인터 ( 변수, 함수, 포인터 등을 대입 할 수 있음 ) # 함수 포인터 ( function pointer ) > 함수 이름의 주소를 대입 할 수 있는 포인터 > 프로그램이 실행될때 compile 이 완료된 상태이므로 반환값, 전달값은 정해져 있다. # 값에 의한 전달 ( call by value ) > 전달하는 변수의 값을 호출되는 함수의 매개변수에 복사(copy) > 메모리 ..
# 배열 # 같은 타입(자료형)의 변수들의 모임 > 1차원 ~ N차원 까지 사용 가능 ( 메모리를 넘지 않는 상황 ) > 보통 1차원 ~ 2차원 까지를 가장 많이 이용 # 특징 > 배열을 선언할때 길이는 상수 이어야 한다. > 첫번째 번호는 0번 부터 시작 > 컴파일러는 배열의 길이가 아닌 배열의 주소값을 이용하여 접근한다. > C++11 이상 - 배열 초기화 시점에 대입 연산자[=]를 사용하지 않아도 된다. - 값을 지정하지 않고 {} 중괄호 만으로 0값으로 초기화 가능 - 암시적인 변환(narrowing cast) 를 방지 해준다. # 메모리 크기 > 배열의 자료형 * 배열의 길이 > sizeof(이름) / sizeof(자료형) # N차원 배열 > 2차원 이상의 배열 > 배열의 각 요소가 배열이 될 ..
# 프로그램에서 사용하는 산술/연산 식 > 산술, 대입, 증감, 비교, 논리, 비트 등의 연산자 제공 # 산술 연산자 > 사칙연산 : 2개의 피 연산자 ( 방향 : 좌 -> 우 ) > 종류 : *, /, %, +, - ( 우선순위 : 좌 -> 우 ) # 대입 연산자 > 대입연산 : 변수에 값을 입력 ( 방향 : 우 -> 좌 ) > 종류 : *=, /=, %=, +=, -=, = ( 우선순위 : 좌 -> 우 -> 좌 ) # 증감 연산자 > 증감연산 : 변수의 값을 변경 ( 방향 : 좌 -> 우(뒤), 우 -> 좌(앞) ) > 종류 : A++, A--, ++A, --A # 비교 연산자 > 비교연산 : 2개의 피 연산자 ( 방향 : 좌 -> 우 ) > 종류 : ==, !=, >, >=, 우(2개), 우 -> ..
# 구조체 > 사용자 정의로 생성된 타입 ( 여러 자료형의 모임 ) > 멤버 변수 : 구성되는 자료형 변수 > 구조체 안에 구조체를 선언 가능 ( 중첩 ) > 크기 : 전체 자료형의 크기들의 합 # 형태 > struct 기본이름 > { > int ABC; > ... > }; > struct > { > int ABC; > ... > } 새로운이름; - 이름은 생략이 가능하지만 생량하는 경우에는 새로운 이름을 이용 - typedef 기존이름 변경이름; 형태로 새로운 이름으로 재정의 가능 # 멤버 변수 접근 > .연산자를 이용해서 접근 > 초기화 할때는 { } 와 .연산자를 이용 > 초기값을 설정하지 않은 경우에는 0으로 자동 초기화 # 생성 및 사용 > 구조체이름 stDEF; > stDEF.ABC = 111..
# 물리적인 메모리 영역에 source code 가 load 되고 프로그램에서 사용하는 변수들과 메모리 공간을 할당 > 코드 영역 : 실행 프로그램 소스 코드가 저장되는 공간 - 실행 시점에 결정 > 데이터 영역 : 전역/정적 변수들이 저장되는 공간 - 컴파일 시점에 결정 > 스택 영역 : 지역/매개 변수들이 저장되는 공간 - 컴파일 시점에 결정 > 힙 영역 : User 가 직접 관리 하는 공간 ( 생성/삭제 ) - 실행 시점에 결정 # 메모리 할당1 > User 에 의해서 힙 영역에 특정 공간을 관리하기 위한 요청이 발생 > malloc 명령어를 이용해서 할당 받고 free 명령어를 이용해서 해제 > byte 단위로 전체 크기를 설정 > return 값은 첫번째 주소값 ( pointer ) # 메모리 ..
# 널 포인터 ( null pointer ) > 아무것도 가르키지 않는 포인터 > 포인터 변수를 0 으로 초기화 하거나 NULL 로 초기화 # 비자료형 포인터 ( void pointer ) > 주소값만 저장 가능 > 포인터 연산이나 메모리 참조는 할 수 없다. > 자료형이 없는 포인터 ( 변수, 함수, 포인터 등을 대입 할 수 있음 ) # 함수 포인터 ( function pointer ) > 함수 이름의 주소를 대입 할 수 있는 포인터 > 프로그램이 실행될때 compile 이 완료된 상태이므로 반환값, 전달값은 정해져 있다. # 값에 의한 전달 ( call by value ) > 전달하는 변수의 값을 호출되는 함수의 매개변수에 복사(copy) > 메모리 영역이 공유되지 않음. # 참조에 의한 전달 ( c..
# 배열 # 같은 타입(자료형)의 변수들의 모임 > 1차원 ~ N차원 까지 사용 가능 ( 메모리를 넘지 않는 상황 ) > 보통 1차원 ~ 2차원 까지를 가장 많이 이용 # 특징 > 배열을 선언할때 길이는 상수 이어야 한다. > 첫번째 번호는 0번 부터 시작 > 컴파일러는 배열의 길이가 아닌 배열의 주소값을 이용하여 접근한다. # 메모리 크기 > 배열의 자료형 * 배열의 길이 > sizeof(이름) / sizeof(자료형) # N차원 배열 > 2차원 이상의 배열 > 배열의 각 요소가 배열이 될 수 있다. # 1차원 배열 > 구조1 : 자료형 이름 [ 길이 ]; - 생성될때 초기화 하지 않았으므로 주의해서 사용 > 구조2 : 자료형 이름 [ 길이 ] = { 요소1, 요소2, ... }; - 생성될때 초기화 ..
# 프로그램에서 사용하는 산술/연산 식 > 산술, 대입, 증감, 비교, 논리, 비트 등의 연산자 제공 # 산술 연산자 > 사칙연산 : 2개의 피 연산자 ( 방향 : 좌 -> 우 ) > 종류 : *, /, %, +, - ( 우선순위 : 좌 -> 우 ) # 대입 연산자 > 대입연산 : 변수에 값을 입력 ( 방향 : 우 -> 좌 ) > 종류 : *=, /=, %=, +=, -=, = ( 우선순위 : 좌 -> 우 -> 좌 ) # 증감 연산자 > 증감연산 : 변수의 값을 변경 ( 방향 : 좌 -> 우(뒤), 우 -> 좌(앞) ) > 종류 : A++, A--, ++A, --A # 비교 연산자 > 비교연산 : 2개의 피 연산자 ( 방향 : 좌 -> 우 ) > 종류 : ==, !=, >, >=, 우(2개), 우 -> ..
1. 포인터 # 메모리 주소를 가지고 있는 변수 # new 키워드 사용 # & 연산자와 new 키워드에 return 값을 갖음 ( 주소 값 ) # 동일한 자료형을 물리적인 메모리 공간에 연속으로 할당 받아서 이용한다. # 구조체/클래스를 이용해서 생성한 Object의 주소를 의미한다. > int iDataValue = 100; > int *pPointer_INT = &iDataValue; > float fDataValue = 1234.f; > float *pPoint_FLOAT = &fDataValue; > struct STRUCTTestSampleData > { > bool a; int b; float c; > } > > STRUCTTestSampleData *pPointer_STRUCT = new S..