포인터 14

곱씹어보자 C!_#031_삽잡이의 파일 입출력을 사용한 저장 및 복원 예제

안녕하세요 삽잡이입니다.. 이번 글은 파일 입출력에 관한 실습 예제 입니다. 역시 코딩은 눈으로만 보는 것이 아니라 직접해봐야한다는... 인터넷의 많은 도움과 짜집기의 힘을 얻어 만든 이 코드는 문자열 입력, 출력, 검색, 삭제, 저장, 복원의 기능을 가지고 있습니다... 다시한번 인터넷님에게 감사드리며... 많은 정보들을 남겨주신 모든 분들에게 감사드리며... 푸하하... 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798..

곱씹어보자 C!_#030_삽잡이의 지금까지 C언어 마지막(?) 예제

안녕하세요 삽잡이 입니다~오늘부로 C언어는 기약없는 보류를~ ㅎㅎㅎ 마지막 예제입니다... 문자열을 'exit' 문자를 입력 받기 전까지 입력받고,그 문자열의 아스키 코드 및, 대문자-> 소문자 변환 하는 예제 코드입니다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#pragma warning (disable:4996)#include #include #include int Count = 0;char* InputString(){ char buf[500]; char* s; printf("문자열 입력 : "); gets(buf)..

곱씹어보자 C!_#025_삽잡이의 두서없이 막말하는 함수 포인터

달립니다 달립시다~~ 삽잡이는 달립니다~~ 이번 시간에는 함수포인터로 C부려봅시다~~ 함수 포인터... 많이 사용됩니다. 크게 사용하는 분야를 2개로 나눌 수 있습니다. 첫번째, 프로그램 기능의 유연성을 키우고자 할때, 두번재, Callback 함수를 만들어 낼 때 입니다. 첫번째에 대한 설명을 드리자면, 함수포인터 하나만 가지고 있으면 함수의 주소 즉, 이름을 대입하여 많은 곳에 사용할 수 있게 됩니다. 즉, 어떨 때는 A함수, 어떨 때는 B함수 코드 한줄 안고치고도 기능이 바뀔 수 있죠... 이게 바로 유연성을 키운다고 말하는 것입니다. 단, 같은 시그니처를 가지고 있을 때 사용할 수 있겠죠... 이렇게 사용할 수 있습니다... 123456789101112131415161718192021222324#..

곱씹어보자 C!_#024_삽잡이의 두서없이 막말하는 void*

오직 내 길만 걸어간다.뛰아갈 때도 있다... 쉬다 갈 때도 있다...안녕하십니까 삽잡이입니다. 푸하하 오늘은 void* 에 대한 C부리기시작합니다~ malloc은 동적 메모리를 할당할 때 사용하죠.. 이때 반환형이 void* 인것을 주목해야합니다..포인터는 주소를 가리키죠? 그런데 말입니다. 딱 고정되어있는 주소형을 받는 포인터가 아니어야 할 때가 있습니다... 컴퓨터에서는 자료를 다룰 일이 많습니다... 하나하나 다 정성스레 다뤄줘야하는데... 이를 두리 뭉실하게 '추상적'으로 다룸으로 일명 유도리있게 다룬다면,코드의 양이 줄면서도, 수정할 필요가 적어질 수 있습니다. 즉, 뭔말이냐하면어떤 데이터들을 다룰 때 구체적인 하나하나를 다루는 것 보다두루뭉실하게 모든 것을 다루는 것이 확장성도 좋고 수정하기..

곱씹어보자 C!_#023_삽잡이의 두서없이 막말하는 지금까지 응용 예제

안녕하세요 삽잡이 입니다!오늘은 지금까지 배워온 모든 것들을 응요해서예제를 만들어봤습니다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132#pragma warning(disable:4996)#include #include #include #in..

곱씹어보자 C!_#022_삽잡이의 두서없이 막말하는 구조체 예시_둘

안녕하세요 삽잡이입니다.구조체 예시 두번째 시간입니다... 지난시간에 이어 예시를 살펴보는데 어때요 재미있죠...아하하하하하하하하 정줄 놓지 않았습니다.... 죄송합니다... C부려보도록 하겠습니다... 푸하하 이번시간도 마찬가지로 지난 시간부터 주구장창 사용하는요놈... 를 꾸준히 사용하며 설명을 진행해보도록 하겠습니다.안녕~~~ 123456typedef struct _Point { int x; int y;}Point; cs 구조체에서는 오직 딱 하나 '대입' 만이 가능합니다.다른거 안되요... 같은 타입인 경우 대입 즉, 복사가 가능합니다. 이를 메모리 덤프라고도 하죠...이렇게 가능합니다... 1234567891011121314151617void PrintPoint(Point ps[]){ print..

곱씹어보자 C!_#016_삽잡이의 두서없이 막하는 배열 포인터

1234int arr[3] = {4, 2, 3}; int* p; p = arr;cs 위와 같이 선언하고 정의를 하여 포인터 변수를 arr 배열과 같이 사용할 수 있습니다. 하지만 중요한 것은 arr[0]와 p[0]이 같으려면 포인터 변수인 p는 int형 주소를 담는 int* 형이어야 한다는 것입니다. int 형 메모리를 int* 형 포인터는 다 접근할 수 있다 이겁니다. 그렇다면 2차원 배열을 생각해보도록 하겠습니다. 12345int arr[2][3] = {1,2,3, 4,5,6};int* p; p = arr; Colored by Color Scriptercs 2차원 배열도 뭐 까지꺼 똑같이 선언하면 되지 않겠습니까? 아닙니다. 해보세요...왜 안되거나 warning을 발생시킬까요? 형태가 달라서 그렇습..

곱씹어보자 C!_#014_ 삽잡이의 두서없이 막하는 예제 코딩

지금까지 주절주절 거리며 떠들었던 것들에 대한 예시들을 살펴보도록 하겠습니다.예제에 대한 설명들은 다 안하고... 그냥 제가 살펴보고 싶은 것만... 하하...쉬운 코드들이라... 그냥 보시는 데에도 문제 없으실 것입니다. 말씀은 안드렸지만, 이번 '곱씹어보자 C!' 기획은...C언어를 아시는 상태에서 한번 훑어보며 기억을 다시한번 잡아보자 하는 마음에 올리게 되기에...아무래도 저의 화려한 삽잡이의 캐릭터와 (ㅋㅋㅋㅋ) 그림들이 없어 밋밋한 면이 있죠... 아무튼... 그 전에 우선 하나 확실하게 다시 알아보고 갑시다. 지난 번에 설명한 것인데요...이번에 올릴 예시들을 이해하는데 도움이 많이 될것 같아서요! 다른 함수로 요청을 할 때에 매개변수를 보낸다고 했었습니다.그런데, 그 매개변수에는 사용하는 ..

[삽잡이::C] 연산자

'* 연산자 + 주소' 는 메모리의 이름이 된다. 즉 *(asterisk) 연산자는 주소 앞에 붙어 해당 주소의 메모리 이름으로 된다. '주소 + [] 연산자' 또한 같은 기능을 담당한다. 즉, '*' 와 '[]' 연산자는 같은 기능을 하나는 것이다. 1234567int arr[] = {1, 2, 3, 4};int* p; p = arr; //arr 즉, 배열의 이름은 배열[0]의 시작주소 printf("p[1]의 값 = %d, arr[1]의 값 = %d\n", p[1], arr[1]); // 서로 같은 값. p는 arr의 주소를 담고 있는데 그렇다면 arr의 주소 1번재 메모리 이름이 되겠다.cs

곱씹어보자 C!_#013_ 삽잡이의 두서없이 막말하는 함수(2)

안녕하세요 여러분 ㅎㅎ두말할것 없이 우선 예시 살펴보면서 시작하도록 해요 1234567891011121314151617181920212223242526272829//(1)#include int Add(int a, int b) { return a+b;} void main() { int k = 2, m = 3; printf("sum = %d\n", Add(k,m)); } //(2)#include int Add(int* pa, int* pb) { return *pa+ *pb;} void main() { int k = 2, m = 3; printf("sum = %d\n", Add(&k, &m));}Colored by Color Scriptercs (1) 와 (2)의 차이점을 아시겠습니까?이전까지 계속 포인터를 ..