1. 포인터
> 포인터
- 주소를 가리킴
- 변수는 메모리에 담기기 때문에 해당 변수가 위치한 메모리의 주소를 의미
- 기호
1) * : 주소를 담은(을) 장소를 의미 = 저장된 값인 주소를 불러오는 것
2) & : 값이 담긴 장소의 주소를 의미
- 배열의 경우 호출 시 배열의 첫 번째 인수를 호출하는 것이기 때문에 기호가 없어도 포인터처럼 사용 가능
int a[n];
printf("%d", *a+4);
/************************
*a = a 배열의 첫번째 인수 주소
a[0] + 4 의미
************************/
printf("%d", *(a+1));
/************************
*(a+1) = 두 번째 요소의 주소(&a[1])
a[1] 의미
************************/
- 이중 포인터
: 포인터에 다시 다른 포인터의 주소를 담은 것
- 필자의 팁) 아래와 같이 그림을 그려서 보기
2. 구조체
> 구조체
: 여러 개의 다른 타입 변수(자료)를 묶어서 새로운 타입을 정의
: 하지만 메소드는 불가능(Class는 메소드까지 포함 가능 / 캡슐화)
항목 | C : strut | Java, Python : class |
데이터 | 변수만 저장 가능 | 변수 + 함수(메서드) 저장 가능 |
캡슐화 | 없음 | 있음 |
상속 | 불가능 | 가능 |
기본 접근제한자 | public | private |
> 구조체 정의 : 자료형을 하나 만드는 것
struct 구조체명 {
자료형 변수;
자료형 변수;
}
> 구조체 변수 선언 : 정의한 구조체에 대한 변수 선언
struct 구조체명 변수명;
struct 구조체명 *구조체포인터 변수명;
> 구조체 멤버 지정
- 점 연산자('.') : 구조체 변수를 이용해 멤버를 지정할 경우
: 구조체변수명.멤버변수명 = 값;
- 화살표 연산자('->') : 구조체 포인터 변수를 이용해 멤버를 지정할 경우
: 구조체 포인터변수명->멤버변수명 = 값;
- 포인터 연산자('*') : 구조체 포인터 변수, 구조체 변수 모두 사용 가능, 괄호 필수
: (*구조체 포인터 변수명).멤버변수명 = 값;
: 괄호 필수 > . 연산자의 우선 순위가 높아 괄호를 안 할 경우 잘못된 값을 찾음
3. 사용자 정의 함수
- C언어의 경우 상단에 함수를 정의해야함
- 만약, 하단에 정의하는 경우 상단에 선언 필수
- 선언 형태 : 자료형 함수명(자료형 매개변수, ...);
- return의 유무
1) 함수의 자료형이 void 인 경우
- return 필요 없음
- void 자료형의 경우 반환 값이 없음을 의미 = 반환(return) 값(value)가 없으니 return문을 작성하지 않음
- return;을 통해 강제 종료는 가능함
2) 함수의 자료형이 void 제외한 형태인 경우
- return 필수
- return 하는 값은 함수의 자료형과 동일한 자료형을 지니고 있어야 함
4. 형변환(Type Casting)
> 자동 형변환 = 암묵적 형변환
- 자료형의 불일치로 인해 발생
- 데이터의 손실이 적은 방향으로 자동 진행(좌측 방향으로 형변환 발생)
: long double > double > float > long long > long > int
> 강제 형변환 = 명시적 형변환
- 개발자가 강제로 형을 변환시키는 것
- (자료형)변수명
'정보처리기사 > 실기' 카테고리의 다른 글
코딩 - Python (0) | 2025.07.17 |
---|---|
코딩 - Java(클래스, 상속과 생성자, 메소드 오버라이딩, final 클래스와 메소드, 추상화, 형변환, 예외처리) (0) | 2025.07.17 |
코딩 - 공통 분야 (1) | 2025.07.16 |
데이터베이스 - 신기술 (0) | 2025.07.16 |
데이터베이스 - SQL 응용 (0) | 2025.07.16 |