예약어 'struct' 통해 int나 char같은 자료형 정의
✓ 헝가리안 표기법: 변수명에 데이터 타입 명시하는 것
: 기억 영역 결정
C언어의 4가지 기억 클래스: auto, register, static, extern
명시 안하면 auto로 간주
✓ 가비지 콜렉터: JAVA에서, 선언만 하고 사용하지 않는 변수들이 차지하는 메모리공간 해제하여 다른프로그램이 사용할 수 있게 하는 것
위 두개를 전치하면 먼저 변수의 값을 증감 후 연산, 후치하면 연산 후 증감
비트별(0,1) 연산하여 결과값을 얻음
ex) & (and), ^ (xor; 모든비트가 같으면 0, 하나라도 다르면 1), | (or), ~ (not)
연산자 우선순위 (증산시관비논조대순)
: 증감연산자 > 산술연산자(* / %) > 산술연산자 ( + / - ) > 시프트 연산자 > 관계 연산자 > 비트 연산자 > 논리 연산자 > 조건 연산자 > 대입 연산자 > 순서 연산자
: !(not) , && (and) , || (or)
: +=, -=, *=, /=, %=, <<=, >>=
서식 문자열
- %d: 정수형 10진수 입출력
- %u: 부호 없는 정수형 10진수 입출력
- %o: 정수형 8진수 입출력
- %x: 정수형 16진수 입출력
- %c: 문자 입출력 (숫자 없으면 한문자만, 있으면 자리수만큼)
- %s: 문자열 입출력 (숫자 없으면 다 출력, 있으면 자리수만큼)
- %f: 소수점 포함하는 실수 입출력
- %e: 지수형 실수 입출력
입출력 관련 수식
- scanf("%3d", &a): 3자리(받는 데이터가 3자리 넘어도 3자리만 딱), 10진수, 입력받은 데이터를 변수 a에 저장
- printf("%-8.2f", 200.2): 왼쪽부터 출력('-', 없으면 오른쪽부터), 8자리(기본 8자리 제공, 넘으면 넘는대로 출력, 남으면 빈공간), 소수점이하 2자리, 실수로 출력
- java 표준 출력 3가지: System.out.printf(), System.out.print(), System.out.println()
- 문자 'A' 는 아스키코드로 65 (이후 +1)
- getchar(): 한문자 입력받음
- gets(): 엔터 전까지 입력받음
- putchar(): 한문자 출력
- puts(): 문자열 출력 후 커서를 자동으로 다음 줄 앞으로 이동
포인터: 변수의 주소, C에서는 주소 제어할 수 있는 기능 제공
포인터 변수: 변수의 주소 저장할 때 사용하는 변수
예제
main()
{
int a = 50; // 정수 a 선언, 50으로 초기화
int *b; // 포인터 변수 b 선언
b = &a; // 정수 a의 주소를 b에 할당
*b = *b + 20; // b가 가리키는 값 => a의 값 즉 50
printf("%d, %d", a, *b);
}
// 70, 70
용도
배열 위치 나타내는 첨자 생략하고 배열의 대표명만 지정하면 배열의 첫번째 요소의 주소를 지정하는 것과 같음.
main()
{
int a[5]; // 5개의 요소를 갖는 정수형 배열 a를 선언
int i; // 정수형 변수 i 선언
int \*p; // 포인터 변수 p 선언
for (i=0;i<5;i++)
a[i] = i + 10; // a[0]=10, ... , a[4]=14 할당
p = a; // 포인터변수 = 배열의 대표명 -> 배열의 시작주소인 a[0]의 주소(&)를 p에 저장
for (i=0;i<5;i++)
printf("%d", *(p+i));
}
// 10 11 12 13 14
C에서 int의 크기는 4byte이므로 한 배열 이후의 물리적 주소는 기존 위치에서 4byte 증가한 곳을 가리킨다. 즉,
a[0]의 물리적 주소가 1000일 때, a[1]의 물리적 주소는 1004, 이후는 1008, ... 이런식으로 4byte씩 증가하게 된다.
참고도서 📚
2022 시나공 정보처리기사 필기