변수 선언 방법

코딩C언어JavaPython
읽는데 12분 소요
처음 쓰여진 날: 2026-03-10
마지막 수정일: 2026-03-28
조회수: 4,791

요약

변수가 무엇인지부터 시작하여 변수 선언, 초기화, 콤마 선언, 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

기본 선언 쌩기초

변수 선언과 초기화 — 메모리에 이름이 붙은 공간이 만들어지고 값이 저장되는 모습
변수 선언과 초기화 — 메모리에 이름이 붙은 공간이 만들어지고 값이 저장되는 모습
변수 선언과 초기화 — 메모리에 이름이 붙은 공간이 만들어지고 값이 저장되는 모습
변수 선언과 초기화 — 메모리에 이름이 붙은 공간이 만들어지고 값이 저장되는 모습
Python 변수 생성과 자동 타입 결정 — 값을 대입하면 변수가 만들어지고 타입은 자동 결정됨
Python 변수 생성과 자동 타입 결정 — 값을 대입하면 변수가 만들어지고 타입은 자동 결정됨

변수(variable)는 데이터를 저장하는 공간입니다. 숫자, 글자 등을 담아두었다가 필요할 때 꺼내 쓸 수 있습니다. 빈 상자라고 생각하면 됩니다.

C에서 변수를 사용하려면 먼저 자료형(type)과 이름을 지정하여 선언해야 합니다.

빈 상자에 아무거나 담지 못하도록 자료형으로 일종의 잠금장치를 거는 것입니다. int로 선언하면 정수만, char로 선언하면 글자만 넣을 수 있습니다.

이름은 원하는 대로 자유롭게 지을 수 있고, 이 이름을 통해 상자를 쉽게 찾아서 안에 담긴 값을 꺼낼 수 있습니다. 만약 이름이 없다면 메모리 주소를 코드에 직접 써야 하기 때문에, 이름을 붙여서 사람이 읽기 쉽게 만드는 것입니다.

변수(variable)는 데이터를 저장하는 공간입니다. 숫자, 글자 등을 담아두었다가 필요할 때 꺼내 쓸 수 있습니다. 빈 상자라고 생각하면 됩니다.

Java에서 변수를 사용하려면 먼저 타입(type)과 이름을 지정하여 선언해야 합니다. 타입은 이 변수에 어떤 종류의 데이터를 저장할지 정하는 것이고, 이름은 원하는 대로 자유롭게 지을 수 있습니다.

변수(variable)는 데이터를 저장하는 공간입니다. 숫자, 글자 등을 담아두었다가 필요할 때 꺼내 쓸 수 있습니다. 빈 상자라고 생각하면 됩니다.

Python에서는 타입을 지정하지 않아도 됩니다. 값을 대입(=으로 값을 넣는 것)하면 변수가 자동으로 생성됩니다. C/Java에서는 별도의 "선언" 단계가 필요하지만, Python에서는 값을 넣는 것만으로 변수가 만들어지므로 "변수 생성"이라고 표현합니다.

c
코드 하이라이팅 중...
변수 선언만 한 상태 — 공간은 만들어졌지만 값은 아직 정해지지 않음
변수 선언만 한 상태 — 공간은 만들어졌지만 값은 아직 정해지지 않음
java
코드 하이라이팅 중...

Python에서는 별도의 선언 문법이 없습니다. 값을 대입하는 순간 변수가 생성되고, 대입된 값에 따라 타입이 자동으로 결정됩니다.

python
코드 하이라이팅 중...

같은 변수에 다른 타입의 값을 다시 대입할 수도 있습니다. 새 값을 넣으면 원래 값은 사라지고 새 값으로 교체됩니다.

python
코드 하이라이팅 중...

C/Java에서는 int num;으로 선언하면 num에 문자열을 넣을 수 없습니다. 타입이 정해져 있기 때문에 다른 종류의 데이터를 넣으면 에러가 발생합니다. 반면 Python에서는 자유롭게 바꿀 수 있습니다.

선언과 동시에 처음으로 값을 넣는 것을 초기화(initialization)라고 합니다. "초기(처음) + 화(되게 하다)" = 처음 값을 정해준다는 뜻입니다.

선언과 동시에 처음으로 값을 넣는 것을 초기화(initialization)라고 합니다. "초기(처음) + 화(되게 하다)" = 처음 값을 정해준다는 뜻입니다.

c
코드 하이라이팅 중...
변수 선언과 초기화 — 공간에 값이 저장된 상태
변수 선언과 초기화 — 공간에 값이 저장된 상태
java
코드 하이라이팅 중...
변수 선언과 초기화 — 공간에 값이 저장된 상태
변수 선언과 초기화 — 공간에 값이 저장된 상태

콤마 선언 기초

같은 타입의 변수 여러 개를 쉼표(,)로 구분하여 한 줄에 선언할 수 있습니다.

c
코드 하이라이팅 중...

위 코드는 아래와 동일합니다.

c
코드 하이라이팅 중...

초기화도 함께 할 수 있습니다.

c
코드 하이라이팅 중...

위 코드는 아래와 동일합니다.

c
코드 하이라이팅 중...

일부만 초기화할 수도 있습니다.

c
코드 하이라이팅 중...

위 코드는 아래와 동일합니다.

c
코드 하이라이팅 중...
java
코드 하이라이팅 중...

위 코드는 아래와 동일합니다.

java
코드 하이라이팅 중...

초기화도 함께 할 수 있습니다.

java
코드 하이라이팅 중...

위 코드는 아래와 동일합니다.

java
코드 하이라이팅 중...

일부만 초기화할 수도 있습니다.

java
코드 하이라이팅 중...

위 코드는 아래와 동일합니다.

java
코드 하이라이팅 중...

Python에서도 한 줄에 여러 변수를 선언할 수 있습니다.

python
코드 하이라이팅 중...

속성, 지역 변수, 매개변수 기초

Java에서는 변수를 선언하는 위치 — 클래스1 안인지, 메서드2 안인지, 메서드의 소괄호 () 안인지 — 에 따라 이름이 달라집니다.

java
코드 하이라이팅 중...
변수의 선언 위치와 영역 — 클래스 영역 안에 메서드 영역이 있고, 속성/매개변수/지역 변수가 각각 다른 위치에 선언됨
변수의 선언 위치와 영역 — 클래스 영역 안에 메서드 영역이 있고, 속성/매개변수/지역 변수가 각각 다른 위치에 선언됨
종류선언 위치예시
속성 (attribute)클래스 내부, 메서드 바깥int age;
지역 변수 (local variable)메서드 내부int temp = a;
매개변수 (parameter)메서드 이름 옆 소괄호 안int a

속성은 그 클래스로 만든 객체3가 가지는 데이터입니다. 위 코드에서 age는 학생마다 각각 다른 값을 가질 수 있는 데이터입니다. 속성은 별도로 초기화하지 않아도 타입에 맞는 기본값(int는 0, double은 0.0, boolean은 false)이 자동으로 들어갑니다.

java
코드 하이라이팅 중...

반면 지역 변수는 메서드가 실행될 때 생겼다가 메서드가 끝나면 사라지는 임시 변수입니다. 기본값이 없으므로 반드시 값을 넣은 뒤 사용해야 합니다.

java
코드 하이라이팅 중...
속성 vs 지역 변수의 생존 기간 — 속성은 객체와 함께, 지역 변수는 메서드 실행 중에만 존재
속성 vs 지역 변수의 생존 기간 — 속성은 객체와 함께, 지역 변수는 메서드 실행 중에만 존재

지역 변수에 대한 자세한 내용은 변수의 유효 범위에서 확인할 수 있습니다.


포인터 콤마 선언 심화

포인터는 다른 변수의 메모리 주소(컴퓨터 메모리 안에서 각 저장 공간마다 매겨진 번호)를 저장하는 변수입니다. 포인터 변수를 콤마로 선언할 때는 주의가 필요합니다. *는 문법적으로 변수명 앞에 붙는 것이기 때문에, int *p, q;라고 쓰면 *p에만 적용되고 q에는 적용되지 않습니다.

c
코드 하이라이팅 중...
선언p의 타입q의 타입
int *p, *q;int *int *
int *p, q;int *int

구조체 포인터 콤마 선언

시험에서 자주 등장하는 패턴입니다. 구조체(struct)는 여러 변수를 하나로 묶어 만든 사용자 정의 타입이고, 구조체 포인터도 같은 규칙이 적용됩니다.

c
코드 하이라이팅 중...

이 코드는 아래와 동일합니다.

c
코드 하이라이팅 중...

struct Node*가 타입처럼 보이지만, *는 각 변수명 앞에 붙어야 합니다. struct Node *h, n;이라고 쓰면 n은 포인터가 아니라 struct Node 타입의 일반 변수가 됩니다.


정보처리기사 실기 대비 문제


Footnotes

  1. 관련 있는 변수(속성)와 동작(메서드)을 하나로 묶어 만든 설계도. Java의 모든 코드는 클래스 안에 작성합니다.

  2. 특정 동작을 수행하는 코드 묶음. C의 함수와 비슷하지만, Java에서는 클래스 안에 작성합니다.

  3. 클래스(설계도)를 바탕으로 실제로 만들어진 것. Student 클래스로 여러 학생을 만들 수 있고, 각각의 age 값이 다를 수 있습니다.