프로그래밍 언어/C언어 37

C언어 함수란?

안녕하세요 오늘은 C언어 함수를 알아보겠습니다.일단 함수는 매우 쉽고 편리합니다. 솔직히 함수를 사용하지 않고 코드를 작성 할 수 있습니다.예를들어 X= A+B를 구하는 코드를 작성해보겠습니다 Colored By Color Scripter™123456789101112131415#include int main(){ int x; x=1+2; printf("두 수를 더한 값 : %d \n",x); x=10+20; printf("두 수를 더한 값 : %d \n",x); x=100+200; printf("두 수를 더한 값 : %d \n",x);} 6번~7번줄, 9번~10번줄, 12~13번줄을 보면 같은 코드인데 값만 다릅니다.이렇게 반복적인 행동을 함수로 만들어 놓으면 편합니다 Colored By Color Sc..

C언어 역슬래시(\)란?

안녕하세요. 오늘은 C언어 역슬래시에 대해 알아보겠습니다 (\) 역슬래시는 \n, \b 같은걸로도 쓰이고 그냥 역슬래시 \ 로도 쓰입니다. 그냥 역슬래시만 쓴다면 줄을 이어주는 역할을 합니다. 아래코드의 결과는? Colored By Color Scripter™123456789#include int main(){ printf("역슬래시 \ 태스트 \ \n"); } 이런식으로 사용합니다. 그래서 코드를 작성하는데 한줄을 길게 작성해야될 때 사용하면 됩니다예를들어 if문 조건이 긴 경우, define으로 매크로함수를 사용 할 때 사용합니다. 예) define 매크로함수 사용 Colored By Color Scripter™1234567891011#include #define add(ia,ib) \{\ print..

C언어 NULL포인터란?

안녕하세요. 오늘은 NULL포인터에 대해 알아보겠습니다. NULL포인터란 포인터가 NULL을 가리키는 것 입니다. 포인터가 NULL을 가리키면 포인터는 아무것도 가리키지 않는것을 의미합니다. ※ NULL 포인터를 쓰는이유 1. 포인터를 NULL로 선언한 다음에 if문을 통해서 포인터가 선언됬나 안됬나 검사하면 오류를 줄일 수 있다. Colored By Color Scripter™1234567891011#include int main(){ int *p = NULL; if(p==NULL) { printf("p 포인터가 선언되지 않았다. \n"); //선언 }} 2. NULL 포인터로 초기화된 포인터와 초기화되지 않은 포인터는 다르다. NULL 포인터로 초기화하면 , 해당 포인터는 메모리상에 어떠한 값도 가리..

포인터 사용 예시

안녕하세요 오늘은 포인터사용 예시를 들어보겠습니다 Colored By Color Scripter™12345678910111213141516171819#include int main(){ int a=100; int b = 69; int *p; p= &a; printf("a의주소 : %d \n", &a); printf("p의주소 : %d \n", p); *p = b; printf("%d \n",a); printf("p의주소 : %d \n", p);} a의주소 : 6487612p의주소 : 648761269p의주소 : 6487612 먼저 int형 포인터를 만듭니다. int형 포인터변수에는 어떤 변수의 주소값을 넣을수 있습니다.9번째 줄에서 만들었던 포인터 변수에 a의 주소를 넣습니다.a의 주소 : 6487612..

C언어 문자열 사용해보기

안녕하세요 오늘은 문자열 사용하는 것을 해 보겠습니다.자바는 String클래스가 있어서 문자열을 다루기 매우 쉽습니다. 그러나 C언어는 이런 것이 없어서 배열을 사용해서 문자열을 다뤄야 합니다.먼저 문자열의 끝에는 NULL문자가 들어갑니다.(\0) 널 문자가 존재하는 이유는 문자열의 끝을 알려주기 위해서 입니다. 문자열 사용하기 배열을 선언해서 문자를 저장하면 문자열이 됩니다.1234567#include int main(void){ char array[10] = { 'a', 'b', 'c', 'd', NULL,'e','f' }; printf("array : %s \n",array1);}Colored by Color Scriptercs 배열을 선언해서 문자를 저장하면 문자열이 됩니다.12345678910#..

C언어 포인터와 배열에대해 알아보기입니다.

안녕하세요. 오늘은 배열과 포인터의 관계에 대해 알아보겠습니다.배열과 포인터는 밀접한 관련이 있습니다. 왜냐하면 배열의 이름 = 주소입니다. 배열의 이름 = 배열의 첫번째 주소 위의 그림을보면 int형 배열을 선언했습니다. array1[0]의 주소는 1이고 int형이므로 주소가 4씩 증가하게 됩니다.이때 array1 = &array1[0] = &array1이 됩니다.array1 = 배열의 이름이 배열의 첫번째 주소&array1[0] = 배열의 첫번째 주소&array1 = array1배열의 주소 그러나 배열의 크기는 다릅니다. array1의 크기는 20이고 array1은 int형이므로 4입니다.그러므로 array1+1 = 5 , &array1[0]+1 = 5, &array1+1 = 21이 됩니다. 1234..

C언어 포인터 알아보기 입니다.

안녕하세요. 오늘은 포인터(pointer)에 대해 알아보겠습니다. 변수 선언을 하면 메모리에 어떠한 값이 저장됩니다. 그러면 이때 이 메모리의 주소가 있고 그 주소를 가리키는게 포인터라고합니다. - 주솟값의 실제 사용 예위의 그림은 32bit MCU의 메모리맵입니다. 왼쪽 0x로 시작하는 부분은 주소이고 오른쪽은 그 주소에 저장된 데이터입니다. PortA를 제어하려면 0x40010c00주소와 offset을 더해서 제어하면 됩니다. 1 (*(volatile unsigned *)0x40010c04) |= 0x10;cs (의미는 아래에 나옵니다.) 위의 코드는 실제로 주솟값을 가지고 코딩한 것입니다. 근데 주솟값을 가지고 코딩을 하면 사용 할 때마다 찾아야 하므로 힘듭니다. 그래서 일반적인 컴파일러는 이러한 ..

C언어 공용체(union)에 대해 알아보기입니다.

안녕하세요. 오늘은 C언어 공용체 (union)에 대해 알아볼 것 입니다.공용체란 멤버변수끼리 메모리를 공유하는 것 입니다. 메모리를 공유하면 메모리를 아낄 수 있는 장점이 있는 반면, 다른 멤버변수에 값을 넣으면 기존의 값은 지워지게 됩니다.공동체를 선언하는 방법은 구조체와 같습니다.union 변수명 {멤버목록}; 123456union data{ int age; int score; char class;};cs위와같이 union을 선언했다고하면 위의 그림처럼 메모리에 할당이 됩니다. 1234567891011121314151617181920#include union data{ int age; int score; char class;}; int main(void){ union data miyeong; miy..

C언어 열거형(enum)알아보기 입니다.

안녕하세요. 오늘은 열거형(enum)을 알아볼건데요, 열거형이란 변수를 나열해서 사용한다는건데 사용하는 이유는 편리함과 속도향상입니다.정의하는 방법은 구조체 혹은 공용체와 비슷합니다. 선언방법enum 변수명{멤버 목록};12345678910111213141516171819 #include enum week{ SUN, MON, TUE, WED, THU, FRI, SAT}; int main(void){ printf("SUN ? : %d \n", SUN); printf("MON ? : %d \n", MON); printf("TUE ? : %d \n", TUE); printf("WED ? : %d \n", WED); printf("THU ? : %d \n", THU); printf("FRI ? : %d \n",..

C언어 #define, #if , #ifdef , #ifndef란

안녕하세요. 오늘은 전처리기 #define, #if, #ifdef, #ifndef에대해 알아보겠습니다.먼저 전처리기란 컴파일 하기 전에 #가 붙은 코드를 지정해놓은 코드로 변경하는 일입니다. 사용자가 직접 할 필요 없고 자동으로 해줍니다 #define#define란 값을 치환해 주는 것입니다. 예를 들어 절대 안 변하는 파이값 PI=3.14라고 하였을 코드내에서 int PI=3.14라고 해놨다면, 사용자가 실수로 PI=300 이런식으로 할 수 있는데, 이런것을 방지해줍니다. 또한 공통의 값이 들어갈때 #define을 사용할 수 있습니다. #if#if는 if문과 기능이 같습니다. 그러나 #define에 정의된 값이 integral type이여야만 합니다.해당하지 않는 문장은 연해진 것을 볼 수 있습니다. ..