변수와 상수

BANG·2020년 11월 24일

C 기본

목록 보기
2/7

변수

수나 문자와 같은 값(상수)을 저장하는, 언제든지 다른값을 저장할 수 있는 이름변수(variable)

  • 변수를 선언만 하고 초기화 하지 않으면 쓰레기값(아무 의미 없는 값)이 저장됨
  • visual studio는 초기화 되지 않은 변수를 감지해고 오류를 출력함
  • 정적 변수(함수 밖에 선언된 변수)로 선언된 것은 기본적으로 초기화됨
#include <stdio.h>
#pragma warning(disable:4996)

int main() 
{
	int num;	// 변수 선언
    num = 0;	// 변수 초기화(처음으로 값 대입)
    num = 10;	// 값 대입
    
    int test = 0;	// 변수의 선언 및 초기화
}

상수

데이터를 직접 표현하거나 저장할 수 있고 수나 문자와 같은 값 자체상수(constant)

  • 변경이 불가능한 값

리터럴(Literal) 상수

  • 이름을 지니지 않는 상수
  • 할당된 메모리 공간에 이름이 없는 것
#include <stdio.h>
#pragma warning(disable:4996)

int main() 
{
	int num = 10 + 20;
}

위의 코드를 예시로 들면...
1. 정수 10, 20이 메모리에 상수로 저장됨 <- 리터럴 상수
2. 두 상수를 연산
3. 연산 결과를 num변수에 저장

접미사 이용

  • 자료형을 기반으로 상수를 표현
접미사자료형예제
Uunsigned intunsigned int n1 = 1025U
Llonglong n2 = 1025L
ULunsigned longunsigned long n3 = 1027UL
LLlong longlong long n4 = 1035LL
ULLunsigned long longunsigned long long n5 = 1025ULL
Ffloatfloat n6 = 3.17F
Llong doublelong double n7 = 5.79L

심볼릭(Symbolic) 상수

  • 이름을 지니는 상수
  • const 선언
  • 변수를 상수화 하는 목적
  • 포인터 변수를 이용해 포인터 변수가 가리키는 주소의 값을 변경하는 것을 못하게 함
#include<stdio.h>
#pragma warning(disable:4996)

int main()
{
	int a = 10;
	const int* ptr = &a;
	// *ptr = 30;	// 에러 발생
	a = 20;	// 정상적으로 변경
}
  • 포인터 변수가 저장한 주소값을 변경하지 못하게 함(주소 변경 불가)
#include<stdio.h>
#pragma warning(disable:4996)

int main()
{
	int a = 10;
	int b = 30;
	int* const ptr = &a;
	// ptr = &b;	// 에러 발생
	*ptr = 20;	// 정상적으로 변경
}
profile
Record Everything!!

0개의 댓글