기초/C,C++
-
[C/C++] 간단한 예제(복습)기초/C,C++ 2017. 3. 18. 10:32
1. C언어 프로그램에서 반드시 있어야 되는 함수? -main 함수 , 대부분 언어에서 main함수는 필수! 2. 문장의 끝에 꼭! 추가해야되는 기호는? - ;(세미콜론) 문장의 끝을 의미 3. 화면에 새로운 줄바꿈 표시의 특수 기호는? - \n (enter의 역할) -1. Tab만큼 이동하는 특수 기호는?- \t (tab의 역할) -2. 문자 자체를 표시하는 특수기호는?=> 무슨 말인지 모르겠다 ... %를 표시하고싶을떄 %% [%]기호 2개를 사용하기, ' " ? < 기호 표시하고 싶을때 \(백슬래쉬) 후 입력 4. 기본자료형의 데이터 종류와 크기,서식문자? int 정수 4byte %dfloat 실수 4byte %fdouble 실수 8byte %lfchar 문자 1byte %c 5. printf를 사..
-
[C/C++] #define, 전처리기,기초/C,C++ 2017. 3. 8. 10:09
전처리기 컴파일전 실행되는 코드들 #define 매크로 값, 연산자, 문장 등 이름으로 단순히 치환하는 역할을 한다. 메모리 공간 할당 X 자료형 관련 X 따라서 전처리기(#define)이 컴파일로 갈때 컴파일이 binary코드로 만들기전 치환을 끝낸다. ex) #define PI 3.14 printf("%d",PI); 를 하면 PI값은 컴파일 이전에 3.14로 변경됩니다. 함수나 연산자로도 사용할 수 있습니다. 그렇다면 조건식으로도 사용할 수 있습니다. ***but*** 매크로는 그대로 치환해버리기 때문에 연산의 결과값이 원하는 결과값과 다를수 있습니다. 그렇기 때문에 연산을 할때는 ( )를 묶어줍니다. [원치 않은 결과값] ??why?? 매크로로 정의된 함수는 받은 인자값을 그대로 치환합니다. 따라서..
-
[C/C++] 메모리영역기초/C,C++ 2017. 3. 7. 09:09
코드영역 *실행할 프로그램의 코드가 저장되는 메모리 공간이다. *CPU가 코드영역에 저장된 명령문을 하나씩 가져다가 실행한다. 힙영역 *프로그래머가 원하는 시점에 메모리 공간에 할당 및 소멸을 하기위한 영역이다. 데이터영역 *전역변수 static 변수가 할당되는 영역 *프로그램시작과 동시에 할당되어 종료시까지 남아있는 특징의 변수가 저장되는 영역 스택영역 *지역변수와 매개변수가 할당되는 영역 *함수를 빠져나가면 소멸되는 변수를 저장하는 영역 데이터영역 = static & 전역변수 스택영역 = 지역변수 & 매개변수fre 정적(static) int num; int num2[10]; 프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는 것이다. 메모리의 크기는 프로그램이 시작하기 전에 결정된다. (자..
-
[C/C++] 구조체기초/C,C++ 2017. 3. 6. 10:56
구조체 struct 구조체는 "변수의 묶음"이라고 생각하시면 됩니다. 예를들어 "학생"에대한 국어,영어,수학점수와 그의 대한 총점 평균에 대해서 정의한다고 가정했을 때 void main(){ char* name; int kor; int eng; int math; int sum; double avg; } 이렇게 정의하신 후 여러개를 정의한다고 했을때 각각의 변수마다 배열로 정의해 주셔야 합니다. char* name[]; int kor[]; int eng[]; ....... 이러면 너무 귀찮지 않나요? 이렇게 특정한 대상에 대한 변수들을 한번에 묶어서 사용할 수 있습니다. [선언] struct 구조체이름{ 선언될 변수들.. ... ... }; //세미콜론을 붙여준다 메인 함수에서 struct 구조체이름 구조..
-
[C/C++] 클래스, 구조체, 함수의 차이점기초/C,C++ 2017. 3. 3. 10:10
구조체 구조체는 변수를 묶어놓은 곳입니다. 클래스와는 약간 다릅니다. main함수에서 불러서 사용하는 것에는 크게 3가지가 있습니다. #1 함수 #2 구조체(공용체) #3 클래스 함수는 동작들을 모아놓은 것입니다 파라매터를 받고 return값을 주거나 값을 바꾸는 작업을 하는거죠 사람이 동작하는 move라고 생각하시면 됩니다. ex)손짓, 몸짓, 말하기.... 구조체(공용체)는 변수만 모아놓은 것입니다. 사람에 있는 데이터만 모아놓은 것이라고 생각하시면 됩니다. ex) 이름, 주소, 혈액형, 전화번호 ... 공용체 = 선언된 변수들이 동일한 메모리를 사용(공용) 구조체 = 선언된 변수에 각각의 메모리를 부여함 클래스는 함수와 구조체를 모아둔것이라고 생각하시면 됩니다. 인스턴스를 뽑을 수 있다는 점입니다...
-
[C/C++] 반환 형식 ,Call by ~기초/C,C++ 2017. 3. 2. 10:07
Call by reference Call by value 두 개의 단어를 들어 보셨나요? 아마 대부분의 프로그래밍 언어 시간을 배우다보면 이 두가지의 차이를 인지하라고 할 것입니다. 왜 중요한가? 포인터와 배열을 배우셨고 함수도 배우셨다면 혹은 자바에서 객체를 배우셨다면 무조건 이해하셔야 하는 부분입니다. 이해하시지 않고 가시면 나중에 원하시는 결과를 얻는 과정이 힘드실 거예요... Call by Value 값을 넘겨주는 것입니다. Call by Reference 주소를 넘겨주는 것입니다. 어차피 주소에도 값이 들어가는데요?? 네 맞습니다. 하지만 주소에는 여 러 가 지 값이 들어있습니다. 따라서 C에서는 포인터 배열, 자바에서는 객체값을 변경하고 싶을 때 값만 바꿔서 오류를 내는 경우가 공부하시는 분들..
-
[C,C++] 포인터와 배열기초/C,C++ 2017. 3. 2. 09:40
포인터는 #1 주소값, #2 포인터 타입이 필요하다.포인터는 항상 가르키는 대상의 맨앞 주소를 가르키고 있다.배열은 이름자체가 [0]번쨰 방을 가르키고 있으며 변수의 타입을 가지고있다. 그럼 차이점은 무엇인가?포인터는 "포인터 변수"이고배열은 "포인터 상수"입니다. 변수 = 바꿀 수 있다.상수 = 바꿀 수 없다.포인터는 가르키는 대상을 변경할 수 있지만배열은 항상 자기 자신의 0번째 인덱스를 가르킵니다. 포인터와 배열에는 덧셈을 할 경우 변수타입의 바이트가 더해집니다. 예를들어 arr = 1235008일 경우arr + 1 = 1235012가 됩니다. int 타입이 4바이트로 인식되어 자료형의 크기가 더해진겁니다.그래서 arr = arr[0]을 가르키므로arr + 1 = arr[1]을 가르키게 됩니다. [..
-
[C/C++] 포인터기초/C,C++ 2017. 2. 28. 09:50
포 인 터 [장점]연결리스트, 이진트리등의 상향된 자료구조 구축 가능참조에 의한 호출(call by reference)동적메모리 할당 자바의 꽃은 상속이지만 C언어의 꽃은 포인터 입니다. 포인터를 사용하는 목적은 컴파일시 자동적으로 부여되는 변수의 주소값을 컨트롤하기 위함입니다. 그래서 포인터변수에는 주소값(&)만 넣을 수 있습니다. 저희는 &기호를 한번 써 본적이 있습니다. int num = 0; 이 선언 되었을때 scanf("%d",&num); &num의 의미가 num의 주소값을 가르키는 의미였습니다 &은 주소값을 가르키는 기호입니다 !!!!!!!!!!!중요!!!!!!!!! 포인터 변수는 반드시 초기화를 해야합니다. 포인터 변수를 초기화 하지 않고 사용한 경우 쓰레기값의 주소값이 들어가는데 그떄 쓰레..