일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 김성엽
- win32
- 핵심 요약
- 미가공
- MFC 예제
- C++
- 충무창업큐브
- ListBox
- Time
- tips강좌
- 유료강좌
- mysql
- 별찍기 기초
- mfc 실습
- Tipsware
- 정처기 독학
- C언어
- linux
- 실습
- 포트폴리오
- MFC
- MyThread
- MyTread
- 도움말
- 정보처리기사
- 별찍기
- SSG
- 마이크로소프트
- do it c
- C
- Today
- Total
목록Tipslab 강좌 복습/김성엽 선생님 c 강의 복습 (10)
History
안녕하세요 이 게시판에는 오랜만에 글을 적습니다. 오늘은 김성엽 선생님의 새로운 C언어 강의를 소개하려고 합니다. 김성엽 선생님은 코로나 이후로 오프라인으로 진행하던 무료 강의를 온라인으로 진행하셨습니다. 그러다 보니 양질의 Q&A가 줄어드는 단점을 보고 이번 22년 여름 C언어 강의를 유튜브에서 실시간으로 진행해주시면서 Q&A를 진행해주신다고 합니다. 아래 링크는 선생님의 유튜브입니다. 매주 화 목 오후 9시에 실시간으로 선생님과 같이 소통하면서 공부하는 시간을 가졌으면 좋겠습니다ㅎㅎ https://www.youtube.com/c/%EA%B9%80%EC%84%B1%EC%97%BD 김성엽 저는 20년 넘게 C, C++로 프로그램을 하고 있고 Microsoft MVP(Visual C++)로 활동하고 있는 ..
보호되어 있는 글입니다.
해당 게시물은 김성엽 선생님의 강의를 바탕으로 만든 게시물입니다. ●구조체 -서로 다른 데이터 형식을 묶는 방법 만약 나이, 시급, 월급 데이터를 입력하려고 했을 때, 나이: 1byte 시급: 2byte 월급: 4byte 이렇게 7byte의 용량이 필요하다. 또한 이 데이터는 배열에 저장할 수도 있고, 포인터 문법을 사용할 수 도 있고, 구조체를 사용할 수 도있다. 그리고 이 데이터들의 특성상 음수는 나올 수 없으므로 unsigned까지 붙이면 된다. 그럼 구조체로 데이터를 입력하기 전에 포인터 문법으로 이 데이터들을 입력해 보겠다. +) __int8 *p //8bit 정수 사용하겠다는 뜻 UINT8 *p // windows.h 헤더파일을 인클루드 해야함 but 헤더파일을 include하지 않고 바로 쓰..
해당 게시물은 김성엽 선생님의 강의를 바탕으로 만든 게시물입니다. ● 이차 포인터 먼저 상식적인 일차 포인터를 구현해보자 int main() { int data; int *p; p=&data; *p=5; //data=5; } 이런 방법으로 포인터를 사용할 수 있다. 그럼 일반 변수에다가 주소값을 대입하는 방법을 보자. 매우 간단하다. int main() { int data; int *p; int temp; temp=&data; //가능하긴 하나 경고 발생 } 이렇게 temp라는 일반 변수도 주소값을 대입할 수 있다. 그러나 이럴경우 경고가 발생하는데 그 이유는 일반 변수인데 주소를 넣으려고 해서 그렇다. 그렇다면 경고를 없앨 수 있는 방법이 뭐가 있을까? 그것은 형변환을 해주는 것이다. int main(..
해당 게시물은 김성엽 선생님의 강의를 바탕으로 만든 게시물입니다. ●2차 배열 아래 그림은 1차원 배열이고 인덱스는 0부터 시작하여 하나씩 증가되는 형태이다. 그러나 이렇게 인덱스를 늘리다 보면 끝이 없고 나중에는 몇 번째 인덱스에 어떤 데이터가 들어갔는지 헷갈릴 수 도 있다. 그렇기에 데이터를 보관할 때는 그룹화를 이용하는 것이 좋다. 이제부터 그룹화를 이용해서 아래 그림을 수정해 보겠다. 아래 그림을 보면 1차원 배열과 다른 점이 있다. 1: 그룹화 되어있다. 2: 그룹화되어있는 부분의 인덱스가 3칸씩 초기화되어 증가한다. 이렇게 하면 데이터를 기억하기 편하다. 왜냐하면 7번째 인덱스의 값이 4라고 가정했을 때 그룹화시킨 2차 배열은 2번째 그룹 1번째 인덱스에 4라는 값이 있다. 이렇게 기억하면 나..
해당 게시물은 김성엽 선생님의 강의를 바탕으로 만든 게시물입니다. ●포인터 연습 먼저 알아야 할 상식을 말하겠다. 평소 우리는 자료구조의 스택을 공부할 때 bp의 0번째는 아래 그림과 같이 0부터 순차적으로 올라오게 되어있다. 그러나 컴퓨터 상에서는 여기 쓰여있는 번지가 거꾸로 되어있다. 그래서 우리는 평소 공부를 할 때 거꾸로 공부하는 습관을 가지고 해야 한다. 아래 그림은 예시이다. 이 그림처럼 밑의 번지가 더 크다. 자 그럼 이제부터 저번 게시물에 이어서 어떤 식으로 주소연산이 되는지 알아보자. int a; 라는 변수가 선언되었다고 가정하자. 이 a에 0x12345678을 대입한다고 했을 때 값이 어떻게 들어갈까? 답은 아래 그림과 같다. 그러면 a에 0x3344를 대입하면? 표현한 값은 2byte..
해당 게시물은 김성엽 선생님의 강의를 바탕으로 만든 게시물입니다. 4-1 정리 부분에 이어서 글을 쓰겠다. 까먹은 사람들은 아래 링크를 통해서 다시 4-1 글을 보고 오면 된다! c 언어 온라인 무료강좌 4-1차시 정리 (tistory.com) c 언어 온라인 무료강좌 4-1차시 정리 History c 언어 온라인 무료강좌 4-1차시 정리 본문 Prev 1 2 3 4 5 ··· 7 Next hard-go-head.tistory.com 그럼 저번 글에 이어서 다시 글을 써보자. 만약 아래와 같은 코드가 있다. int main() { short a; short *p; p=&a; //== (short*)a } 이 코드는 a라는 short 변수와 포인터 변수 p가 선언된 후 p에 a의 주소 값을 대입하는 코드이..
해당 게시물은 김성엽 선생님의 강의를 바탕으로 만든 게시물입니다. ●포인터 -포인터는 다른 변수처럼 자기 자신은 메모리에 존재하고 있지만 포인터 변수 자체가 다른 메모리의 주소를 저장하고 있는 특징을 가지고 있다. -포인터든 포인터가 아니든 명령어는 비슷하다. -주소도 데이터이고, 정수도 데이터이다. -주소 값은 정수이다. EX) 1000번지라고 하면 1000은 정수이다. 1000번지라는 주소 값이 있다. 그래서 그 주소 값을 정수형 변수에 대입을 하려고 한다. 그래서 int a=1000; 이러한 코드를 작성한다. 그러나 과연 이렇게 변수에 들어간 1000이라는 데이터는 주소 값으로 들어간 걸까? 아니다. 이 1000이라는 숫자는 그냥 단순한 정수 1000일뿐이다. 그러면 주소 1000을 대입하려면 어떻..