본문 바로가기

OLD/[C]정리중8

[개탱][Call By Value][Call By reference] (예시 코드는 swap 함수로 a와 b의 값을 바꾸려고 하는 코드이다) Call By Value호출 시킨 값을 복사해와서 작업을 함.. [ 값에 직접적인 영향이 없음 ]123456789101112131415void swap(int A, int B);void main(){ int a, b; a = 30; b = 20; swap( a, b);} void swap(int A, int B){ int iTmp = A; A = B; B = iTmp;}cs int a, b 를 선언 후 a에 30을 대입, b에 20을 대입( a= 30, b = 20 )main 안에 있는 local value인 a와 b의 값을 복사를 해서 swap의 매개변수인 A, B 에 넣어주고 그 값으로 (A = 30, B = 20)안에 int 형.. 2018. 1. 2.
[개탱][C][지역변수와 전역변수] 지역변수 & 전역변수12345678910111213141516171819202122int a; // 전역변수 int main(){ int a = 100; // 지역변수 aa(); bb(); printf("Main 함수 내의 a 는 %d 입니다\n",a);} void aa(){ int a = 10; //지역변수 a++; printf("aa 함수 내의 a 는 %d 입니다\n",a);} void bb(){ printf("bb 함수 내의 a 는 %d 입니다\n",a); } Colored by Color Scriptercs 함수내부에서 어떠한 변수에 대한 연산이 진행될 때 전역변수와 지역변수가 둘다 정의가 되어있다면 자신과 가장 가까이에 있는 지역변수를 이용하여 연산을 진행하며전역변수만 존재하고 지역변수가 존재하.. 2018. 1. 2.
[개탱][C][전처리(preprocessor directives)][헤더파일 중복선언 방지] 헤더파일의 중복선언을 방지하기위해서전처리(preprocessor directives)로 와 같이 전처리를 실행하여 줍니다. ( _STACK_H 라는게 정의가 되어있지 않다면 #define 으로 _STACK_H라는걸 정의해주며 헤더파일을 한번 정의해준뒤 다시 이 헤더파일에 방문했을때 _STACK_H 가 정의되어 있다면 아예 안에 들어오지않고 무시하고 넘어가버린다 )[여러 사람이 전처리 매크로를 생성하는데 만약에 같은 이름으로 정의를 해줘버리면(이사람도 _A 라고하고 저사람도 _A라고 정의를 해버리면 어떠한 헤더파일에서 _A에 접근을 하면서 _A가 정의가 되고다른 헤더파일에 들어갔는데 어? _A가 정의되있네 ? 라고 하면서 사용을 해야하는 헤더파일이지만 접근을 하지않고 무시하고 넘어갈수도 있으므로 관례상_S.. 2018. 1. 2.
[개탱][C][변수 읽는법][Pointer][Double Pointer][함수 포인터][더블 포인터][포인터] 포인터.. 어려운거 하나도 없다! Pointer 란? 말 그대로 무엇인가를 가리킨다. Pointer를 정의 해줄 때 C언어에서는 Type 과 변수명을 선언하는 그 사이에 '*'를 적어줌으로서 ex) int* a;a는 가리킨다. 무엇을? int형 타입의 변수를 가리킨다.즉 자신보다 *개수가 하나 적은 타입을 가리킨다고 생각하자. 다시말해int* a 는 int* 보다 *개수가 하나 적은 int형을 가리키게 되는것이다. 뭐 더블포인터.. 이런게 많은데 다 똑같다 int** a;a는 가리킨다. 무엇을? 자신의 타입인int** 형보다 *가 한개가 적은즉 int*형을 가리키게 되는것이다. 자 그럼 하나더해서 char*** c;c는 가리킨단다. 무엇을? 자신의 타입인char***형보다 *가 한개 적은char**형을 .. 2018. 1. 2.
[개탱][C][분리 컴파일[Separate compilation]] 분리 컴파일[Separate compilation]123456789101112131415161718192021222324252627282930313233343536373839404142434445#include#include typedef struct stack{ int s[100]; int top;}STACK; // 이것은 구조체를 선언한 것. 정의X 선언O// 선언 :: declaration// 정의 :: definition void push(STACK* s, int data);int pop(STACK* s);int main(){ STACK s1; STACK s2; s1.top = -1; s2.top = -1; push(&s1,100); push(&s1,200); push(&s1,300); int x.. 2018. 1. 2.
[개탱][C][typedef][Typedef Struct ][사용자 정의 구조체] [ 사용자 정의 타입 ( Typedef) ][ ex) typedef type TypeName ] 123typedef int Money; Money a;cs 위와 같이 typedef를 이용하여간단한 int 형 타입이름을 사용시 편하기위해(?) 내가 원하는 이름으로(사용자 정의) 타입을 사용을 가능하다. typedef int Money; 의 구문은자료형의 이름인 int 라는 타입에 Money 라는 별명(?)을 추가로 붙여준다 라고 컴파일러에게 전달시킨다고 생각하면 된다. 똑같은 하나의 타입이며 이에 대한POINTER 변수 (Money* p;) 등등의 행위역시 가능하다. [ 사용자 정의 구조체 ( Typedef Struct ) ] 1234567struct stack{ int x[100]; int top;};/.. 2018. 1. 2.