본문 바로가기

프로그래밍/C언어

[C언어] const 키워드 const란, constant의 약자로 "변함없는"이란 뜻으로 변수 앞에 붙이면 값과 주소를 변경할 수 없도록 만들어 준다. 변수를 상수로 만드는 것이다. 일반적으로 변수를 사용하는 방식 변수 앞에 const가 선언되면서 int _Max는 값과 주소가 변하면 안 되는 변수가 되었다. 이러한 특징 때문에 const형 변수는 하루 24시간, 1년 365일이렇게 값이 변하지 않는 변수로 많이 사용된다. 하지만 const 키워드를 포인터 변수에 사용할 경우 사용법이 달라진다. 【 포인터 변수에 const 키워드 사용 】 포인터 변수에 const 키워드를 붙이는 방법은 두 가지가 있다. EX) const int* _Max = &Value; const가 앞에 붙는 경우 int* const _Max = &Value;.. 더보기
[C언어] 지역변수와 전역변수 전역변수와 지역변수는 선언된 위치에 따라 구분된다. 전역변수의 경우 함수 바깥에 선언되어 있고, 지역변수는 함수 중괄호 안에 선언되어 있다. 그렇다면 while문이나 for문 안에 선언되어 있는 변수는 어떤 변수일까. for문 안에 선언된 변수 역시 지역변수이다. 지역변수는 중괄호 영역에서만 사용할 수 있는데 nTotalCount 는 for문에서 유효하고 nTamp 변수는 메인 함수 전체에서 유효하다. 이렇게만 보면 지역변수보다 전역변수를 이용해 코딩을 하는 것이 훨씬 편하게 느껴진다. 함수에 매개변수를 사용하지 않아도 되고 이 함수 저 함수 구분 없이 변수를 바로 가져다 쓸 수 있기 때문이다. 이 내용은 전역변수의 장점이 될 수도 있지만 단점이 될 수도 있다. 전역변수를 많이 사용하면 사용할수록 복잡하.. 더보기
[C언어] 재귀함수의 사용과 stack Overflow 1. 재귀 함수란? - 자기 자신을 재호출하는 함수로 계속해서 자기 자신을 호출할 수 있기 때문에 반복 연산에 많이 사용된다.자기 자신을 무한정 호출할 수도 있기 때문에 조건문을 제대로 만들어 주지 않으면 오류가 발생하기 쉽지만 잘 사용하면 보기 쉬운 간략한 코드를 만들기도 한다. 예제코드 재귀 호출 결과값 2. 재귀 함수의 사용 재귀 함수라 하면 일단 자기자신을 호출해야 한다. 그리고 절대 탈출 조건이 빠져서는 안된다. 재귀 함수는 반복문과 같은 형태를 띄기 때문에 탈출 조건이 없다는 것은 무한 루프에 빠지겠다는 것과 같다. 재귀 호출을 사용할 때는 항상 탈출 구문에 주의해야 한다. 3. 재귀 함수와 Stack Overflow - 예제 코드에서는 보기 쉽게 10회면 함수를 호출하지만 실제 프로그램 안에.. 더보기
[C언어] printf 함수에 사용되는 특수문자, 서식문자 1. 특수문자 특수문자 설명 \a 경고음 소리 발생 \b 백스페이스(Backspace) \f 폼 피드(Form Feed) \n 개행(New Line) \r 캐리지 리턴(Carriage Return) \t 수평 탭 \v 수직 탭 \\ 역 슬래시(\) \' 작은 따옴표 \" 큰 따옴표 2. 서식문자 서식문자 출력 형태 %D, %d 10진수 정수(양수와 음수 모두 표현 가능) %x, %o 16진수 정수, 8진수 정수(양수만 표현 가능) %f, %lf 10진수 실수(양수와 음수 모두 표현 가능) %c 한 개의 문자 %s 문자열 %u 10진수 실수(양수만 표현 가능) %e e 표기법에 의한 실수 %E E 표기법에 의한 실수 %g 소수점 이하 자리 수에 따라 %f, %e 둘 중 하나를 선택 %G 소수점 이하 자리 .. 더보기
[C언어] scanf, scanf_s 함수 오랜만에 예제소스를 만들기 위해 scanf 함수를 사용하였다. 정말 간단한 소스였기때문에 에러가 날 것이라고는 생각지 않았는데...... warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS 경고가 두둥! #include int main(void) { int value1, value2; scanf("%d %d", &value1, &value2); printf("%d + %d = %d\n", value1, value2, value1 + value2); printf("%d - %d = %d\n", .. 더보기
[C언어] rand, srand 함수 ◎ rand 함수- rand 함수는 난수를 발생시키는 함수이다. 범위는 0~32767. rand 함수의 활용 #include // 해당 파일을 포함시켜 줘야 rand 함수를 사용할 수 있다. int main() { int nNum = 1; // 번호 출력용 for(int nCount = 0; nCount < 3; ++nCount) { int nRandom = rand(); // 난수를 생성 printf("[%d] %d\n", nNum, nRandom); nNum++; } return 0; } 결과값 rand 함수는 0~32767의 난수를 생성한다.출력되는 난수의 범위를 지정하고 싶으면 rand() % 100 이런 식으로 범위를 정할 수 있다. rand 함수 범위 지정 #include int main() .. 더보기
[C언어] C언어의 변수 범위 C 언어의 자료형 - 16비트형 - [] 생략가능 [signed] char - 1바이트 부호형 자료. 값의 범위 : -128 ~ 127. 보통의 경우 ASCII 문자를 저장unsigned char - 1바이트 부호없는 자료. 값의 범위 : 0 ~ 255. 정수형 자료 저장[signed] int - 2바이트 부호형 자료. 값의 범위 : -32768 ~ 32767. 정수형 자료 저장unsigned [int] - 2바이트 부호없는 자료. 값의 범위 : 0 ~ 65535. 정수형 자료 저장[signed] long [int] - 4바이트 부호형 자료. 값의 범위 : -2147483648 ~ 2147483647. 정수형 자료 저장unsigned long [int] - 4바이트 부호없는 자료. 값의 범위 : 0 ~ .. 더보기
[C언어] while문 while 문의 기본 원리 int main() { while(반복조건) // 조건이 참이면 반복 내용 실행, 참이 아니면 while문을 탈출 { 반복 실행 내용 } return 0; } 학원 다닐때 코딩을 보면은 while문은 없고 죄다 for문으로만 코딩 한 기억이 납니다.그때 당시에는 while문이 쓰기 껄끄럽고 잘못하면 무한루프 돌고 그래서 잘 사용하지 않았었는데지금은 이 쉬운걸 왜 제대로 사용하지 못했는지.... 머리가 나쁘면 몸이 고생이라는 말이....저를 두고 하는 얘기인가 봅니다.... 그래서 이번 기회에 블로그 정리도 할겸 올려봅니다. 왜 for문 보다 while문이 어렵게 보일까?for문은 시작과 끝이 명확하게 보이고 연산자도 한눈에 들어오는 구조입니다.그렇기 때문에 맨 처음에는 for문.. 더보기
[C언어] 삼항연산자 【 삼항연산자 】 if else문의 축소판이라고 할 수 있는 연산자로 (조건) ? (조건이 참일때 실행) : (조건이 참이 아닐때 실행)로 사용합니다. int x = 1, y = 5; bool bResult = (x < y) ? TRUE : FALSE; printf("bResult : %d\n", bResult); 결과값 bResult : 1 위에 코드처럼 (x < y)라는 조건이 맞았기 때문에 TRUE값이 bResult에 적용되었습니다.참이 아니였다면 0값( FALSE )이 출력되었겠죠. 위에 코드를 if else문으로 바꾼다면 아래와 같은 코드가 됩니다. int x = 1, y = 5; bool bResult = FALSE; if( x < y ) bResult = TRUE; else bResult =.. 더보기
[C언어] 증가연산자와 감소연산자 ( 전치, 후치 ) ◎ 증가연산자 값을 하나 증가시키는 연산자를 말합니다. void main() { int nTemp = 5; nTemp++; printf("nTemp : %d\n", nTemp); return; } 결과 nTemp : 6 ◎ 감소연산자 값을 하나 감소시키는 연산자를 말합니다. void main() { int nTemp = 5; nTemp--; printf("nTemp : %d\n", nTemp); return; } 결과 : nTemp : 4 위에 두 연산자는 코드만 보고도 이해할 수 있을 것입니다.하지만 저 위에는 후치 연산만 나와있는데요. 전치? 후치? ++nTemp 앞에 연산자가 붙으면 전치연산, nTemp++ 뒤에 연산자가 붙으면 후치연산이라고 합니다.연산순서의 차이가 있는데요.++nTemp 전치 연.. 더보기