[C언어 강좌] #13-1 포인터(Pointer) - 1

프로그래밍 강좌/C 2021. 6. 28. 20:18

안녕하세요 파일입니다. 앞에서 다차원 배열을 다룬 뒤로 거점 한 달쯤에 뵙네요! 앞의 연도가 바뀐 건 기분 탓입니다 ㅎㅎ.. 가 아니고 저 글을 작성하고 많이 바빠졌는데 까먹고 강의를 강제 동면시켜버렸습니다 죄송합니다 ㅋㅋ.. 그래도 제 강의 봐주시는 분들이 꽤 있었는데 이미 다른 강의로 도망가버린 거 같아요.. 그래도 꽤나 많은 부분을 공부했으니 스스로 잘하시고 계시겠죠 ㅎㅎ? 어쨌든 C언어 개념에 고지가 얼마 남지 않았습니다! 오늘 배울 것은 포인터입니다! C언어가 Low-Level에 가깝다고 표현하는 이유가 바로 C언어에 존재하는 포인터 때문입니다. 포인터는 일종의 흑마법에 가까운데 일단 이해하긴 어렵고 위험하나 완벽히 이해한다면 거의 모든 것을 할 수 있습니다. 사실 이런 설명을 들으면 무슨 개소..

Article Thumbnail
[C언어 강좌] #12-2 [Array] 다차원 배열

프로그래밍 강좌/C 2020. 5. 17. 21:32

안녕하세요. 오늘은 앞에서 배운 1차원 배열에 이어 다차원 배열을 보겠습니다. 저희는 3차원 세계에 살고 있습니다. 그렇기 때문에 4차원을 이해할 수 없죠. 1차원은 선분, 2차원은 면, 3차원은 입체라고 합니다. 배열을 만들땐 1차원을 넘어 2차원, 3차원, 4차원,..., n차원 배열까지 만들 수 있습니다. 사실 4차원부턴 사용할 일이 그렇게 많지 않습니다. (AI 라던가, 테트리스 라던가..) 그렇기에 다차원 배열은 대개 3차원 까지를 가리킵니다. 물론 다차원 배열은 2차원 배열 이상을 가리키므로 4차원, 5차원을 다차원 배열이라고 불러도 무리가 없습니다. '다차원 배열'이라고 이름 붙은 이유는 인간의 논리인 1차원, 2차원, 3차원을 배열에 적용시켜서 이해하기 위함입니다. 다음 사진은 2차원 배열..

Article Thumbnail
[C언어 강좌] #12-1 [Array] 1차원 배열

프로그래밍 강좌/C 2020. 3. 30. 22:04

안녕하세요 파일입니다. C언어 강좌는 굉장히 오랜만이네요.. 제가 학업에 치이기도 했고 귀찮음이 앞서기에 강좌를 너무 늦게 작성했네요 ㅠㅠ 사실 50% 정도 글을 작성하고 임시저장을 해뒀는데 이어서 작성하려고 보니 글이 통째로 날아가서 멘붕을 조금 했습니다;; 티스토리 임시저장은 네이버에 비하면 너무 부족한거같아요 ㅠㅠ 어쨌든 제 강의를 읽어주시는 분들이 있기에 다시 강의를 작성하게 됬습니다. 오늘 배워볼 것은 배열입니다~ 여기까지 오신 분들은 사실 C언어를 60% 정도는 배웠다고 해도 괜찮죠 ㅎㅎ 참고로 배열은 시각적으로 이해하는 것이 좋기 때문에 최대한 그림을 추가해서 설명해보겠습니다. 또한 난이도가 올라가는 부분이기 때문에 편한 마음으로 시청하시길 권장드립니다. (물론 대충 보라는 뜻은 아니고요....

Article Thumbnail
[C언어 강좌] #11 정적변수, 지역변수, 전역변수, 외부변수, 레지스터 변수

프로그래밍 강좌/C 2020. 1. 28. 01:47

물론 변수는 여기서 배웠는데 왜 또배우나요? 라고 할 수 있습니다. 하지만 저번에 배웠던 변수에 대한 내용들은 기초적인 내용이고, 오늘은 그 변수가 메모리에 언제 생성되고, 언제 소멸되는지, 선언되는 위치, 종류에 대해 심화학습을 해볼것입니다. 우선 오늘 알아볼 변수는 총 5가지 입니다. 지역변수 (local) 전역변수 (global) 정적변수 (static) 외부변수 (extern) 레지스터 변수 (cpu) 종류가 많아보이지만 쫄 필요는 없습니다. 그럼 시작해보겠습니다. 지역변수 지역변수(Local Variable)는 중괄호 내부, 함수의 매개변수(Parameter)에서 사용되는 변수를 의미합니다. 중괄호 밖, 함수의 밖에선 그 효력을 발휘할 수 없습니다. 지역변수에서 지역은 중괄호 내부, 함수의 내부..

Article Thumbnail
[C언어 강좌] #10 함수(Function)

프로그래밍 강좌/C 2020. 1. 18. 00:50

안녕하세요 파일입니다. 오늘은 반복 작업을 편하게 해주는 함수에 대해 알아보겠습니다. 시작에 앞서 강의가 벌써 10강까지 제작되었습니다. 끝까지 열심히 따라 해 봅시다. 메인 함수 #include int main(){ //main 함수 정의 printf("Hello C World"); return 0; } #2강에서 main() 함수에 대해 소개한 적이 있습니다. 기억나시나요 ^^ 항상 프로그램 작성할 때마다 int main() 요건 습관처럼 써줬습니다 main 함수는 이름 그대로 프로그램이 실행될 때 가장 먼저 실행되는 "함수"입니다. 그럼 이제 다른 함수를 만들어보겠습니다 함수의 정의 함수는 왜 필요할까요? 아래 코드를 한번 봅시다. #include int main(){ //main 함수 정의 int..

Article Thumbnail
[C언어 강좌] #9 조건문 (If, ElseIf, Switch)

프로그래밍 강좌/C 2020. 1. 8. 19:48

안녕하세요. 파일입니다 오늘 알아볼 것은 조건문입니다. 조건문은 따로 알아보진 않았지만 앞에서 자연스럽게 사용을 했습니다(If문) 오늘은 If문 이외에도 다른 조건문들을 알아보고 사용법을 알아보겠습니다. If문 #include int main(){ if(조건){ 실행식 } return 0; } If라는 영어단어의 뜻은 '만약'입니다. 프로그래밍에서 if 역시 조건을 따지는 데 사용합니다. 위는 if문의 사용예제입니다. if(조건)이고 조건 안의 값이 참이면 중괄호 안의 코드가 실행됩니다. #include int main(){ int n; printf("숫자를 입력해주세요 : "); scanf("%d", &n); if(n % 2 == 0) printf("짝수입니다"); return 0; } >>> 10 1..

Article Thumbnail
[C언어 강좌] #8 반복문(For, While, Do~While, 무한루프, 중첩)

프로그래밍 강좌/C 2019. 12. 23. 21:52

안녕하세요 파일입니다. 오늘 알아볼 것은 반복문입니다. 컴퓨터는 우선 막일을 잘합니다. 1~1000까지 다 더하려면 가우스 합공식을 이용하는 게 사람, 컴퓨터 둘 다에게 빠르나 컴퓨터는 반복 작업을 통해 1~1000까지 모두 더하는 게 가능합니다. For문, While문은 프로그래밍에서 반복처리를 할 때 100% 활용하기 때문에 꼭 알아두시는 게 좋습니다. 다른 프로그래밍 언어를 하셨더라면 C언어에서 for, while의 사용 방식도 거의 동일합니다. While문 while문은 조건이 참인동안 반복입니다. 사용 방법은 다음과 같습니다. while(조건) { 반복 내용 } 조건이 참 일동 안 만 반복하기 때문에 약간 헷갈릴 수는 있습니다만 그때그때 잘 생각하면 됩니다. 아래 예제를 봅시다. #include..

Article Thumbnail
[C언어 강좌] #7 자료형(Data Type) - 2

프로그래밍 강좌/C 2019. 11. 24. 15:57

실수형 실수형 크기 범위 float 4바이트 32비트 1.175494e-038 ~3.402823e+038 double 8바이트 64비트 2.225074e-308 ~1.797693e+308 long double 8바이트 64비트 2.225074e-308~1.797693e+308 실수형 데이터를 저장하는 변수의 자료형은 실수형입니다. 실수형의 종류에는 float, double, long double 등이 있습니다. 정수형과 마찬가지로 실수형도 최대, 최솟값을 구하는 시스템 라이브러리가 있습니다. 전처리기에서 를 include 해주세요. #include #include int main(void){ printf("float의 최소값 : %e, 최대값 : %e \n", FLT_MIN, FLT_MAX); print..

[C언어 강좌] #7 자료형(Data Type) - 1

프로그래밍 강좌/C 2019. 11. 19. 22:43

안녕하세요 파일입니다. 이전 강의에서 정수형은 int형, 실수형은 float형이라고 다룬 적이 있었죠? 자료형에 관한 표도 봤었구요. 그런데 자료형이 뭘까요? 앞에서 변수를 배웠습니다 그렇죠? 변수는 선언할 때 int a 처럼 앞에 데이터를 저장할 형식을 지정해줍니다. 이것이 자료형입니다. 자료형이란 변수의 저장하는 데이터의 형식입니다. 정수를 저장하고 싶다면 int, long, char 등을 사용하구요 실수를 저장하고 싶다면 float, double, long double 등을 사용합니다. 각 자료형에는 할당되는 메모리의 크기가 있습니다. 이것은 sizeof 함수를 이용해 구할 수 있습니다. #include int main(void){ //정수형 char n1 = 5; short n2 = 10; int..

Article Thumbnail
[C언어 강좌] #6 연산자(Operator) - 2

프로그래밍 강좌/C 2019. 11. 15. 15:53

논리 연산자 논리 연산자는 && 와 || 와! 가 있습니다. AND 연산자 (&&) 피연산자 피연산자 결과값 1 1 1 1 0 0 0 1 0 0 0 0 AND 연산자는 피연산자가 모두 참(1) 일 때 참을 반환합니다. AND 연산자의 의미는 논리곱입니다. 수학의 집합으로 생각하면 교집합의 개념입니다. OR 연산자 ( || ) 피연산자 피연산자 결과값 1 1 1 1 0 1 0 1 1 0 0 0 OR 연산자는 피연산자 중 하나가 참이면 참을 반환합니다. OR 연산자의 의미는 논리합입니다. 수학의 집합으로 생각하면 합집합의 개념입니다. #include int main(){ int a = 10; int b = 5; printf("%d 가 %d 보다 큰가 ? : %d \n", a,b , a > b); printf..

Article Thumbnail
[C언어 강좌] #6 연산자(Operator) - 1

프로그래밍 강좌/C 2019. 11. 14. 21:37

안녕하세요 파일입니다. 오늘 알아볼 것은 연산자입니다. #include int main(){ char c = 'A'; printf("c의 논리적 주소 : &c, c의 물리적 주소, %x", &c); return 0; } c의 논리적 주소 : &c, c의 물리적 주소, 62fe1f -------------------------------- Process exited after 0.01983 seconds with return value 0 계속하려면 아무 키나 누르십시오 . . . scanf에서 배웠던 내용으로 &변수 이름을 하면 변수의 메모리 주소가 나온다고 하였습니다. 위 예제에서 &c를 논리적 주소라고 하고62fe1f를 물리적 주소라고 합니다. 사람이 사용하기엔 &c라는 논리적 개념이 실제 메모리값인..

Article Thumbnail
[C언어 강좌] #5-1 [2진수 변환, 1의보수, 2의보수 원리 설명]

프로그래밍 강좌/C 2019. 11. 12. 01:38

안녕하세요 파일입니다. 연산자를 설명하기 전에 생각해보니 2진법 변환 과정을 모르면 전혀 이해가 안 되실 거 같아서 한번 설명을 하겠습니다. 오늘 내용은 조금 난이도가 있습니다. 약간 수학적인 개념이 필요합니다. 최대한 쉽게 적어 보려고 노력했으니 꼭 끝까지 정독해주셔야 다음 강의 때 이해가 됩니다. 글의 요지는 강의라기 보다 제가 이해한 것들을 적어놓은 노트라고 생각해주시면 편할 거 같습니다 그래서 오류가 있을 수 있으니 글에 오류가 있으면 댓글로 정정 부탁드립니다!! 10진수 2진수로 바꾸기 우선 진법이란 사용할 수 있는 숫자의 개수와 자리값을 정의해주는 수 체계입니다. 우리가 흔히 사용하는 진법은 10진법입니다. 이름이 10진법인건 0~9까지 10개의 숫자를 이용하기 때문인데요. 우리 손가락이 10..

Article Thumbnail
[C언어 강좌] #5 상수 이용하기(Constant)

프로그래밍 강좌/C 2019. 11. 10. 22:49

안녕하세요 파일입니다. 오늘 알아볼 것은 상수입니다. 원의 넓이를 구할 때 공식은 πr^2이며 π는 3.141592... 의 값을 가집니다. r(반지름)의 값은 변해도 π의 값은 변하지 않는데 이러한 것을 상수라고 합니다. (물론 이례적인 천재 수학자가 이 값을 재조정할 가능성은 있겠죠.) 즉 프로그램 실행도중 값이 변하지 않는 데이터를 의미합니다. 상수에는 2가지 종류가 있습니다 리터럴 상수 (Literal) 글자 그대로 의미가 있어 이름이 없는 상수 심볼릭 상수 (Symbolic) 상수를 기호화 하여 변수처럼 이름을 지어쓰는 상수 이렇게 보니 감이 잘 안 오죠? 하나하나 차근차근 알아보겠습니다. 리터럴 상수 영어에서 a, 숫자에서 10 은 글자 그대로 의미를 가집니다. 알파벳 a라는 기능과 숫자 10..

Article Thumbnail
[C언어 강좌] #4-1 scanf와 printf에서 %f, %lf의 차이점

프로그래밍 강좌/C 2019. 11. 8. 20:14

저번 강의에서 double 값을 표기할때 printf는 %f 나 %lf 둘다 써도 상관없지만 scanf는 %lf 로 구분해서 써줘야 한다고 했는데요. 저도 항상 하면서 무슨 차이인지 의문이였는데... 알아두는 편이 좋을거 같아서 추가로 작성합니다. 우선 C언어의 과거로 넘어갈 필요로 있는데요.. 원래 print는 double 형이건 float형이건 간에 %f 하나밖에 없었는데 C99(99년도) 표준에서 %lf 가 추가됬습니다. 결국 %f 와 %lf는 처리방식이 동일합니다. 즉.. printf에서 float값이 전달되면 기본 인자 진급을 통해 자동으로 double 형으로 진급합니다. (진급이라는 말을 쓰는 이유는 double 형이 float 형보다 더 큰 개념이라 그런거 같습니다) 이외에도 규칙이 몇가지 ..

[C언어 강좌] #4 scanf로 입력받기

프로그래밍 강좌/C 2019. 11. 8. 20:04

안녕하세요 파일입니다. 즐거운 금요일이네요 ^^ 제가 요즘 피곤하고 바빠서 글을 많이 못썼습니다.. (스스로 반성 ㅎㅎ..) 저번 시간에 변수와 printf에 대해 배웠습니다. 출력을 했으니.. 이제 사용자가 입력을 하는 것도 해봐야겠죠? 그럴 때 사용하는 것이 바로 scanf인데요. 왜 scan이 아니라 scanf인 것은 저번 강의를 제대로 들었다면 아시겠죠. f 가 Formatted 즉 서식화의 약자입니다. scanf 역시 printf 와 같은 곳인 stdio.h 에서 선언이 되었으므로 전처리기로 똑같이 선언하시면 되겠습니다 ^^ 100번 설명보다 1번 예제가 나으니 바로 들어가겠습니다. #include int main(){ int num = 0; printf("숫자를 입력해주세요 : "); scan..

Article Thumbnail
[C언어 강좌] #3 변수(variable)

프로그래밍 강좌/C 2019. 11. 2. 19:53

안녕하세요. 파일입니다 원래는 scanf를 설명해야 하지만 scanf 에서 받는게 변수의 형식이므로 scanf 보다 변수를 먼저 설명해야 하는게 맞을거 같아서 변수편을 먼저 작성하겠습니다. 변수라... 감이오시나요? 변수란 이름 그대로 변하는 수입니다. C언어에선 무언가를 저장하고 싶을때 사용하는 임시공간을 변수라고 합니다. 메모리 공간이라고도 해석할 수 있겠죠 ^^ 상자에 내가 원하는 물건을 담듯 컴퓨터 메모리 공간에 내가 원하는 데이터를 넣는게 바로 변수입니다. 변수의 선언 #include int main(){ int a; //정수형의 변수 a선언 int b; return 0; } #include int main(){ int a,b; return 0; } 변수를 선언(초기화)할때는 자료형 이름 의 형..

Article Thumbnail
[C언어 강좌] #2 printf 로 마음대로 출력하기 - 2

프로그래밍 강좌/C 2019. 11. 1. 16:21

실수 표기하기 #include int main(){ float a = 0.5; printf("10진수 정수 : %d \n", a); printf("10진수 정수 : %f \n", a); //6자리까지 표기 printf("10진수 정수 : %lf \n\n", a); printf("소수점 6자리 초과 %%f : %f \n", 0.1234567); printf("소수점 6자리 초과 %%lf : %lf \n\n", 0.1234567); printf("소수점 6자리 초과 %%f : %f \n", 0.123456456); printf("소수점 6자리 초과 %%lf : %lf \n", 0.123456456); return 0; } 10진수 정수 : 0 10진수 정수 : 0.500000 10진수 정수 : 0.50000..

Article Thumbnail
[C언어 강좌] #2 printf 로 마음대로 출력하기 - 1

프로그래밍 강좌/C 2019. 10. 31. 23:05

// By File (pgh268400) #include int main(void){ printf("Hello C World!!\n"); return 0; } 안녕하세요 파일입니다. 항상 프로그래밍 언어에서 시작하는 것은 출력을 해보는 건데요. 우선 저번 소스코드부터 시작하겠습니다. 저번에 실행을 하면 Hello World!! 가 출력되는 것이 나왔는데 기억나시나요? 저번에는 아무것도 모르고 따라만 했지만 오늘은 이걸 상세하게 알아보겠습니다. 전처리기 #include 우선 시작은 요렇게 시작하네요. 우선 include라는 영어는 대부분 아시겠지만 include 미국·영국 [ɪnˈkluːd] 발음듣기 영국식 발음듣기 중요도 별점 2개 다른 뜻(2건) 예문보기 1. 포함하다 2. ~을 (~에) 포함시키다 무..

Article Thumbnail
[C언어 강좌] #1 개발환경 구축하기

프로그래밍 강좌/C 2019. 10. 29. 21:37

* 이 강좌는 박정민 님이 쓰신 열혈강의 C언어 본색에 영감을 받아 제작되었습니다 C언어 강좌에 오신 걸 환영합니다! 즐거운 새 출발입니다 ^^ 우선 C언어를 코딩하고 싶으시겠지만.. 그렇기 이전에 개발하기 위한 환경을 구축해야겠죠? C언어 코딩을 메모장이나 도스 창에서 할 순 없으니깐요. 개발환경 구축을 위해 저희는 컴파일러라는 것을 받아야 합니다. 컴파일러란 사람이 알 수 있는 언어로 작성된 것(프로그래밍 언어)을 기계(컴퓨터)가 이해할 수 있는 기계어로 바꾸는 변환기입니다. 컴퓨터는 이진법을 사용하므로 인간의 프로그래밍 언어를 바로 알아들을 수 없습니다. (이진법이란 0, 1을 사용하여 표현하는 숫자 체계를 의미합니다. 컴퓨터는 0,1 말곤 알아듣지 못합니다.) 그렇기 때문에 그걸 중간에서 바꿔주는..

Article Thumbnail
[C언어 강좌] #0 시작에 앞서 C언어를 왜 배우는가?

프로그래밍 강좌/C 2019. 10. 28. 00:14

안녕하세요. 파일의 C언어 강의에 오신 여러분 환영합니다 ^^ 프로그래밍을 공부하시려고 하신 분들이라면 'C 언어'라는 언어가 기초고 먼저 배우라는 말을 매우 많이 들어보셨을 겁니다. 근데 왜 C언어를 먼저 배워야 할까요?? 내가 원하는 프로그램을 만들려면 꼭 C언어를 배워야 하는 건가요? 다른 언어를 먼저 시작해도 상관없지 않을까요? 정답은 네입니다. 실제로 저는 C언어가 아닌 비주얼 베이식으로 프로그래밍을 시작했습니다. C언어 앞부분을 조금 배우다가 딱딱한 콘솔 창이 너무 재미가 없어서 제가 만들고 싶은 프로그램을 WindowForm으로 만들기 시작했습니다. 이렇게 시각적으로 제작을 하니 프로그래밍이 훨씬 더 재미있고 흥미가 생겼습니다. 그럼 다시 'C언어를 왜 배우나요'라는 질문이 생깁니다. C언어..

Article Thumbnail