728x90

이론 80

C언어 이론 8. 포인터 (void포인터와 NULL포인터, 함수 포인터)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. void* vp; ① void형은 함수의 리턴타입이 없을때 혹은 포인터에만 사용할 수 있는 특수한 타입이다. ② void* vp;의 형태로 void형 포인터를 선언할 수 있다. ③ void* vp;는 대상체가 정해져 있지 않다는 뜻으로 어떤 타입이든 가리킬수 있다. ④ void* vp;는 어떤 타입의 주소든 저장할 수 있다. ex) int i; char c; void* vp; vp = &i; vp = &c; ⑤ 하지만 반대로 임의의 T형 포인터 T* tp에 void* vp는 대입할 수 없다. ⑥ int* ip;에 void* vp;를 대입하려 한다면 (int *)vp;로 캐스팅을 해야한다. e..

C언어 이론 8. 포인터 (포인터의 정의와 연산)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. T형 포인터의 정의 ① T형 포인터는 'T형 변수가 저장된 메모리의 시작 주소를 저장하는 자료형'이다. ② 임의의 T형 변수가 있다면 언제나 T형 포인터 변수도 선언할 수 있다. ③ T형 포인터 Tp를 선언하는 문법은 예시와 같다. ex) ⑴ T* tp, ⑵ T *tp, ⑶ T * tp, ⑷ T*tp ④ ⑴은 T* 자체가 하나의 자료형이라는 관점에서 주로 쓰고, ⑵는 *tp가 포인터형 변수임을 강조할 때 주로 쓴다. ⑤ 하지만 T* tp1, tp2 로 쓴다면 tp1은 T형 포인터 변수로 선언되지만, tp2는 그냥 T형 변수로 선언된다. ⑥ 즉, 컴파일러가 T*를 하나의 자료형으로 해석하지는 ..

C언어 이론 7. 함수 (재귀함수와 main함수)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 재귀함수 (recurcive function) ① 함수 내에서 자기 자신을 호출하는 함수. ② 재귀 함수는 함수 내에서 사용하는 변수가 지역변수여야 하고, 값에 의한 전달 방식을 사용해야한다. ③ 재귀 호출은 지역 변수를 사용하므로 저장영역으로 스택을 사용하고 호출되어진 횟수만큼 기억장소가 배정되므로 스택 오버플로우를 주의해야한다. ④ 재귀 호출은 다른 방식에 비해 처리속도가 느리고, 기억장소를 많이 사용하기 때문에 자주 쓸 기법은 아니다. ⑤ 정렬 트리나 리스트 등의 자료구조를 다룰 때 주로 사용한다. Ⅱ. main() 함수의 원형 ① 메인함수의 가장 완전한 원형은 void(또는 int) ..

C언어 이론 7. 함수 (함수간의 데이터 전달)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 값을 주고받는 방식 (call by value) ① 실인수와 가인수가 별도의 기억 장소를 갖고 함수가 호출되면 실인수의 값을 가인수에 복사해서 사용하는 방식 ② 데이터 전달이 끝나면 실인수와 가인수간의 상호작용은 없으며 서로 독립적인 값을 갖는다. ③ 값을 주고 받는 방식으로는 실인수의 값을 직접 건드릴 수 없으므로 함수에서 가인수의 값을 리턴해줘야만 한다. Ⅱ. 주소를 주고받는 방식 (call by reference) ① 가인수가 실인수가 기억된 주소를 전달받아 함수 내에서 실제 실인수를 조작하는 방식. ② 함수의 실인수는 주소로 넘겨줘야 하고, 가인수는 포인터로 받아야한다. ③ 함수내에서..

C언어 이론 7. 함수 (변수의 범위)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) 기억 부류 (Storage Class)명칭 기억지정자 선언위치 해제시기 기억장소 통용범위 자동 초기화 지역 변수(또는 자동 변수) 없음(또는 auto) 블럭 내부 블럭 종료시 스택 선언된 블럭 내 되지 않음 전역 변수 없음 모든 블럭 외부 프로그램 종료시 정적 영역 프로그램 전체 0으로 초기화 정적 변수 static 함수 내부 프로그램 종료시 정적 영역 함수 내부 0으로 초기화 함수 외부 선언된 모듈 내에서만 사용가능한 전역변수화. 외부 모듈에서 extern 지정자로 참조할 수 없다. 외부 변수extern 모든 블럭 외부 모듈 외부에서 선언된 전역변수를 참조하고자 할 때 extern 지정자를 사용..

C언어 이론6. 문자형 배열 및 표준함수 몇가지

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 문자열 ① C언어에는 문자열에 관한 데이터형이 따로 없고, 배열을 이용해서 문자열을 처리한다. ② 문자열을 포인터를 이용해서 처리하는 것도 가능한데, 이는 배열의 이름이 포인터 상수이기 때문이다. ③ C언어는 문자열을 배열의 요소요소에 각각의 문자를 넣고 마지막에 '\0'(NULL문자)를 넣는 것으로 처리한다. ④ 즉, 모든 문자열의 마지막에는 '\0'문자가 들어간다. 예를들어 string이라는 6글자는 's','t','r','i','n','g','\0'의 7글자 7바이트로 저장된다. ⑤ 한문자라도 ''(홀따옴표)로 묶으면 문자상수이고, ""(겹따옴표)로 묶으면 널문자가 포함된 문자열상수가 ..

C언어 이론5. 디버깅과 추적(vs2017 디버깅 단축키)

//내가 디버깅 관련 기능을 잘 모르기 때문에 일단 기본적인 단축키만 정리해 둠. 추적(Trace)은 컴파일 에러는 일어나지 않지만 원하는 결과가 나오지 않았을 때 프로그램을 한 라인씩 실행해가면서 각 변수들의 값들이 어떻게 변하는지 추적하여 논리적 에러를 찾는 것을 말한다. 디버깅 기능을 사용하려면 화면 상단의 표시된 부분이 Debug로 설정되어 있어야 한다. 기본 설정이니 건드리지 않으면 저 상태이다. 디버그와 관련된 내용은 당연히 디버그 탭에서 찾을 수 있다. F11은 코드를 한줄씩 실행한다.F10은 표준 함수의 내부 코드를 건너뛰기 위해서 사용한다.ctrl+F10은 커서 위치까지 실행할 때 사용한다. F9는 F5로 실행했을 때 중간에 멈출 지점을 설정하거나 해제할 때 사용한다. F5로 실행했는데 ..

C언어 이론5. 디버깅과 추적 (자주 뜨는 문법적 에러 메시지)

내용 참고 : YES C (정보공학연구소/생능출판사) 현재 마이크로소프트의 정책으로 학습용으로 한글로 번역되어 있는 비쥬얼 스튜디오를 무료로 받을 수 있다. 그래서 비쥬얼 스튜디오의 에러메시지도 대부분 한글로 출력되므로 책의 영어 메시지는 생략했다.또한 주인장은 C++이 C를 포함하는 관계로 C++환경에서 C코딩을 하고 있으므로 C에서만 나는 에러도 생략했다. ... 사실 책의 내용은 거의 상관없는 것 같기도 하고(..) 아래의 에러코드는 visual studio community 2017을 기준으로 했다.아래의 내용은 에러의 모든 내용을 포함하는 것이 아니므로 에러에 대한 자세한 내용은 에러번호를 클릭해서 나오는 홈페이지 도움말을 참조하자. warning C3861 : 정의되지 않은 함수를 사용했을 때..

C언어 제어문 주요예제 1

정수의 홀수 및 짝수 식별#include void main() { int a; printf("짝홀을 확인할 정수를 입력하세요 : "); scanf_s("%d", &a); if (a % 2 == 0) { printf("%d는 짝수입니다. \n", a); } else { printf("%d는 홀수입니다. \n", a); } //사실 이정도는 삼항연산자가 더 보기 편하다. printf("%d는 %s입니다. \n", a, (a == 0 ? "짝수" : "홀수")); } 원하는 연산자와 두 수를 입력받아 사칙연산을 하고 그 결과를 보여주는 프로그램.(단, 연산자를 잘못 입력했을 때는 다시 연산자를 입력하도록 하고, 나눗셈을 할 때 제수가 0일 경우 제수만 다시 입력받 #include #include int mai..

1. C/C++ 소개.

C/C++에 대한 간략한 설명 C란? 1972년에 벨 연구소의 데니스 리치(Dennis MacAlistair Ritchie, 1941.9.9~2011.10.12)가 만든 프로그래밍 언어. C++이란? 1983년에 벨 연구소의 비야네 스트롭스트룹(Bjarne Stroustrup, 1950.12.30 ~ )이 발표하고 이후 계속하여 발전한 C언어를 바탕으로 만든 프로그래밍 언어. C++라고 쓰고 읽을 때는 C plus plus 혹은 시플플이라고 읽는다. (주인장은 씨쁠쁠이라고 읽는다.) C/C++의 역사 C의 역사 C를 만든 데니스 리치는 크기는 작고 속도는 빠르며 하드웨어를 직접 제어할 수 있는 프로그램을 만들 수 있는 언어가 필요했다. 당시에 이를 충족시킬 수 있는 언어는 저급언어로 분류되는 특정 기계에..

반응형