프로그래밍[Univ]/C언어 38

[C언어] bit 연산 , 비트 연산

bit를 연산하는 법에서 알아봅시다. 제 설명이 많이 부족합니다. 처음 부분만 이해하셧다면 쉽게 bit연산을 할수 있습니다. 하지만 저의 설명에 처음 부분은 존재하지 않는 것 같내요 ㅠ bit는 컴퓨터가 사용하는 숫자로 2진수 0과 1로 나타 내는 것 입니다. 프로그램밍에서의 표현은 변수숫자를 넣을 때 0x를 써주어 16진수로써 사용합니다. 16 진수 = 0 1 2 3 4 5 6 7 8 9 A B C D E F ex ) 0xffffffff = 1111 1111 1111 1111 1111 1111 1111 1111 0x0000000e = 0000 0000 0000 0000 0000 0000 0000 1110 1. and연산자 '&' '&' 연산자는 다음과 같은 실행을 한다. x y x & y 1 0 0 0..

[C언어] 함수포인터

1. 선언 및 사용 1) 선언 return type ( * function name ) ( variable type1, variable type2, ... ); ex) double (*fun) (double,double); > fun이라는 이름을 가지고, double변수를 두 개를 가질 수 있는 함수 포인터 2) 사용 function pointer = function; ex) #include int puls(int x, int y) { return x+y; } int (*fun)(int x, int y); main() { fun = plus; printf("%d\n",fun(2,3)); } 2. void type변수 다루기 1) 변수 타입을 변경하여 다루기 #include int igreater(void..

[C언어]동적할당 ( malloc, realloc, calloc)

1. 메모리할당 우리가 흔히쓰는 선언은 정적 선언이라고 합니다. 즉, 메모리의 총량이 정해져 있다는 것입니다. 정적 선언으로 인해 지정된 변수는 Stack 이라는 메모리공간에 저장됩니다. ※ 참고 : 블럭이 시작 될 때도 stack 에 메모리를 할당합니다. 이를 전문용어로 Activation Recorde라고 합니다. 이에 비해 아래에 나올 동적 선언으로 인해 지정된 변수는 Heap 이라는 메모리에 저장됩니다. 그럼 이젠 동적 할당을 알아봅시다. 2. 동적 할당 동적 할당은 말 그대로 용량이 정해져 있지 않고 변화하는 것을 이야기 합니다. 동적 할당은 다음의 경우에 사용합니다. 1) 필요한 크기를 미리 알수 없는 경우 2) 실제로 필요성 여부를 모르는 메모리를 부여할 때 3) stack size에 한계가..

[C언어]기억클래스류 /static extern auto register

1. 기억 클래스류 1) 변수가 어떤 형태의 메모리에 할당될지 결정하는 것 2) 문법 [기억클래스류] 자료형 변수명 (=초기값); 3) 기억클래스류를 지정하는 이유 ⓐ 변수를 사용할 수 있는 통용범위를 결정 ⓑ 기억장소의 생성과 소멸시기의 차이를 발생시켜 변수의 유효기간을 달리할 수 있다. 4) 종류 auto, register, static, extern 2. 지역변수 1) 유효기간 : 함수나 블록이 실행할 때 변수가 생성 함수나 블록이 끝나면 변수가 소멸 2) 초기 값을 부여하지 않으면 쓰레기 값을 가진다. 3. 전역변수 1) 함수 밖에 선언되는 변수 2) 범위 : 선언 된 부분의 아래쪽에 위치한 모든 함수 프로그램이 실행될 때 변수가 생성되고, 프로그램이 종료될 때 변수가 소멸된다. 3) 특징 : 전..

[C언어]포인터 pointer <기본>

1. 데이터를 전달하는 방식 1) 값 전달 방식 : 함수의 일반적인 값 전달 방식. 함수의 안정성과 독립성을 제공 2) 주소 전달 방식 : ⓐ 함수를 호출한 후 실 매개 변수의 값이 변경되도록 하기위한 경우 ⓑ 함수의 결과 값을 두 개 이상 되돌리기 위한 경우 ⓒ 함수의 매개 변수가 배열인 경우 2. 포인터 1) 주소값, 어드레스 라고도 불린다. > 메모리상의 특정 위치 값을 의미한다. 2) 포인터 연산자 "&" > 변수가 할당 되 있는 주소값이 출력된다. ex ) #include void main() { int a; a = 10; printf("a = %2d\ta의 주소 = %x\n",a,&a); } 결과 : a = 10 a의 주소 = 12ff7c (%x는 16진수를 출력할때 사용하는 것) 3) 포인터..

[C언어] 선행처리자 Preprocessor

1. 선행처리자의 역활 1) 단순한 문자열의 치환 2) 다른 파일의 내용을 첨가 3) 컴파일러에게 컴파일 조건 부여 4) 컴파일러에게 정보를 제공 2. 매크로 상수 1) 문법 #define 매크로상수 치환할 문자열 2) 주의점 ⓐ 선행처리자 명령 뒤엔 ; 세미콜론을 붙여주지 않는다. ⓑ 두 행에 걸쳐서 선행처리자가 명령을 기술 할 때에는 행의 끝에 '\'가 있어야 한다. 3. 매크로 함수 1) 문법 #define 매크로함수 함수내용 2) 주의점 단순 치환 때문에 발생할 수 있는 부작용에 주의 > 괄호를 잘 이용해준다. 4. #include 1) #include 표준디렉토리에서 해당 해더파일을 찾는다. 2) #include"headername" 현재디렉토리에서 해당 해더파일을 찾는다. 해더파일 > 확장자 ..