변수 선언 방법
요약
변수가 무엇인지부터 시작하여 변수 선언, 초기화, 콤마 선언, Java 속성(attribute)과 지역 변수의 차이, 포인터 콤마 선언까지 정보처리기사 실기에 필요한 변수 선언 패턴을 정리합니다.
변수 선언 핵심 정리
아래에서 하나씩 배울 내용을 미리 정리한 표입니다. 지금은 훑어보기만 해도 괜찮습니다.
| 개념 | 설명 | 예시 |
|---|---|---|
| 선언 | 변수의 이름과 타입을 정함 | int x; |
| 초기화 | 선언과 동시에 값을 넣음 | int x = 5; |
| 콤마 선언 | 한 줄에 여러 변수를 선언 | int a, b, c; |
| 개념 | 설명 | 예시 |
|---|---|---|
| 선언 | 변수의 이름과 타입을 정함 | int x; |
| 초기화 | 선언과 동시에 값을 넣음 | int x = 5; |
| 콤마 선언 | 한 줄에 여러 변수를 선언 | int a, b, c; |
| 속성 | 클래스 안, 메서드 밖에 선언한 변수 | int age; |
| 개념 | 설명 | 예시 |
|---|---|---|
| 변수 생성 | 값을 대입하면 자동으로 생성 | x = 5 |
| 타입 지정 불필요 | 정수를 넣으면 int, 소수를 넣으면 float 등 자동 결정 | x = 5 → int |
| 다중 대입 | 한 줄에 여러 변수에 값 대입 | a, b, c = 1, 2, 3 |
기본 선언 쌩기초



변수(variable)는 데이터를 저장하는 공간입니다. 숫자, 글자 등을 담아두었다가 필요할 때 꺼내 쓸 수 있습니다. 빈 상자라고 생각하면 됩니다.
C에서 변수를 사용하려면 먼저 자료형(type)과 이름을 지정하여 선언해야 합니다.
빈 상자에 아무거나 담지 못하도록 자료형으로 일종의 잠금장치를 거는 것입니다. int로 선언하면 정수만, char로 선언하면 글자만 넣을 수 있습니다.
이름은 원하는 대로 자유롭게 지을 수 있고, 이 이름을 통해 상자를 쉽게 찾아서 안에 담긴 값을 꺼낼 수 있습니다. 만약 이름이 없다면 메모리 주소를 코드에 직접 써야 하기 때문에, 이름을 붙여서 사람이 읽기 쉽게 만드는 것입니다.
변수(variable)는 데이터를 저장하는 공간입니다. 숫자, 글자 등을 담아두었다가 필요할 때 꺼내 쓸 수 있습니다. 빈 상자라고 생각하면 됩니다.
Java에서 변수를 사용하려면 먼저 타입(type)과 이름을 지정하여 선언해야 합니다. 타입은 이 변수에 어떤 종류의 데이터를 저장할지 정하는 것이고, 이름은 원하는 대로 자유롭게 지을 수 있습니다.
변수(variable)는 데이터를 저장하는 공간입니다. 숫자, 글자 등을 담아두었다가 필요할 때 꺼내 쓸 수 있습니다. 빈 상자라고 생각하면 됩니다.
Python에서는 타입을 지정하지 않아도 됩니다. 값을 대입(=으로 값을 넣는 것)하면 변수가 자동으로 생성됩니다. C/Java에서는 별도의 "선언" 단계가 필요하지만, Python에서는 값을 넣는 것만으로 변수가 만들어지므로 "변수 생성"이라고 표현합니다.

Python에서는 별도의 선언 문법이 없습니다. 값을 대입하는 순간 변수가 생성되고, 대입된 값에 따라 타입이 자동으로 결정됩니다.
같은 변수에 다른 타입의 값을 다시 대입할 수도 있습니다. 새 값을 넣으면 원래 값은 사라지고 새 값으로 교체됩니다.
C/Java에서는 int num;으로 선언하면 num에 문자열을 넣을 수 없습니다. 타입이 정해져 있기 때문에 다른 종류의 데이터를 넣으면 에러가 발생합니다. 반면 Python에서는 자유롭게 바꿀 수 있습니다.
선언과 동시에 처음으로 값을 넣는 것을 초기화(initialization)라고 합니다. "초기(처음) + 화(되게 하다)" = 처음 값을 정해준다는 뜻입니다.
선언과 동시에 처음으로 값을 넣는 것을 초기화(initialization)라고 합니다. "초기(처음) + 화(되게 하다)" = 처음 값을 정해준다는 뜻입니다.


콤마 선언 기초
같은 타입의 변수 여러 개를 쉼표(,)로 구분하여 한 줄에 선언할 수 있습니다.
위 코드는 아래와 동일합니다.
초기화도 함께 할 수 있습니다.
위 코드는 아래와 동일합니다.
일부만 초기화할 수도 있습니다.
위 코드는 아래와 동일합니다.
위 코드는 아래와 동일합니다.
초기화도 함께 할 수 있습니다.
위 코드는 아래와 동일합니다.
일부만 초기화할 수도 있습니다.
위 코드는 아래와 동일합니다.
Python에서도 한 줄에 여러 변수를 선언할 수 있습니다.
속성, 지역 변수, 매개변수 기초
Java에서는 변수를 선언하는 위치 — 클래스1 안인지, 메서드2 안인지, 메서드의 소괄호 () 안인지 — 에 따라 이름이 달라집니다.

| 종류 | 선언 위치 | 예시 |
|---|---|---|
| 속성 (attribute) | 클래스 내부, 메서드 바깥 | int age; |
| 지역 변수 (local variable) | 메서드 내부 | int temp = a; |
| 매개변수 (parameter) | 메서드 이름 옆 소괄호 안 | int a |
속성은 그 클래스로 만든 객체3가 가지는 데이터입니다. 위 코드에서 age는 학생마다 각각 다른 값을 가질 수 있는 데이터입니다. 속성은 별도로 초기화하지 않아도 타입에 맞는 기본값(int는 0, double은 0.0, boolean은 false)이 자동으로 들어갑니다.
반면 지역 변수는 메서드가 실행될 때 생겼다가 메서드가 끝나면 사라지는 임시 변수입니다. 기본값이 없으므로 반드시 값을 넣은 뒤 사용해야 합니다.

지역 변수에 대한 자세한 내용은 변수의 유효 범위에서 확인할 수 있습니다.
포인터 콤마 선언 심화
포인터는 다른 변수의 메모리 주소(컴퓨터 메모리 안에서 각 저장 공간마다 매겨진 번호)를 저장하는 변수입니다. 포인터 변수를 콤마로 선언할 때는 주의가 필요합니다. *는 문법적으로 변수명 앞에 붙는 것이기 때문에, int *p, q;라고 쓰면 *는 p에만 적용되고 q에는 적용되지 않습니다.
| 선언 | p의 타입 | q의 타입 |
|---|---|---|
int *p, *q; | int * | int * |
int *p, q; | int * | int |
구조체 포인터 콤마 선언
시험에서 자주 등장하는 패턴입니다. 구조체(struct)는 여러 변수를 하나로 묶어 만든 사용자 정의 타입이고, 구조체 포인터도 같은 규칙이 적용됩니다.
이 코드는 아래와 동일합니다.
struct Node*가 타입처럼 보이지만, *는 각 변수명 앞에 붙어야 합니다. struct Node *h, n;이라고 쓰면 n은 포인터가 아니라 struct Node 타입의 일반 변수가 됩니다.