총 삽질들 514

곱씹어보자 C!_#015_삽잡이의 두서없이 막하는 2차원 배열

안녕하세요 삽잡이입니다~오늘도 폭발적인 하루의 끝인 밤이 찾아왔습니다...요즘 폭발적으로 살고 있습니다...하하... 지금까지 제가 살펴본 배열은 모두 1차원 배열이었습니다. 1차원 배열은 간단하게 말하자면,순차적인 인덱스 하나를 가지고 메모리를 접근하는 방식입니다. 그렇다면, 1차원 배열과 다차원 배열의 차이는 뭘까요?1차원 배열은 논리적으로 표현하면 '순차적' 이고,다차원 배열은 논리적으로 표현하면 '행'과 '열'로 표현해낼 수 있습니다. 다차원 배열은 아마도... 일차적으로 표현하기 힘든 상황들을 위해 만들어진 것 같습니다. 다차원 배열이나 1차원 배열이나메모리는 어차피 선형성을 가지고 있어서 주소가 순차적으로 붙습니다... 그러니까 즉, 뭔 배열이라 해도 컴퓨터는 똑같은거죠...사용자인 우리에게만..

곱씹어보자 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)의 차이점을 아시겠습니까?이전까지 계속 포인터를 ..

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

모든 프로그램 언어들은 각자 나름대로 특징이 있습니다...그중 C언어는 함수들의 집합이라는 특징이 있습니다. C언어의 경우에는크게 데이터와 명령어로 나눌 수 있는데요...참고로 명령어들 중에서 관련성 있는 기능들의 명령어들만을 묶은 함수들이모여모여 C언어를 만든다고 할 수 있을까나요... 명령어들을 일일히 수행하면서 진행을 합니다.또한 함수로 시작하여 함수로 끝나죠... 그러면서 필요한 데이터들을 사용하고요... 그래서 C언어는 절차적인 프로그래밍 또는 구조적인 프로그래밍이라고 합니다. C언어는 main() 이라는 함수의 시작 블럭 ( '{' ) 부터 시작되어블럭이 끝나면( '}' ) 프로그램이 종료됩니다. 메인 함수와 같이 {, }가 달려있는 함수들은 우리가 직접 구현했다고 볼 수 있죠...이와는 반대..

곱씹어보자 C!_#011_ 삽잡이의 두서없이 막말하는 문자열(2)

으악 머리가 터질거 같네요...이런 두근 거림... 머리가 터질거 같은데 두근거림... 언어를 하나 완벽하게 습득한다는 것은 무슨 느낌일까요...이렇게 포스팅도 하면서 그럴 날이 찾아온다면 좋겠네요...그러기 위한 과정이라 생각하고!힘이 남아도는 삽잡이는 달리겠습니다! 쉬지않는 오토 마우스~! #010 문자열(1) 에서는 배열과 포인터를 사용하며 주소의 연산을 가지고 놀았습니다...놀았을까요, 끌려 다녔을까요... 하하... 1234 int* p = arr;&arr[0] = p; cs 이와 같이 할 수 있다는 설명으로 끝을 냈던 것 같습니다...아무튼... 배열은 변할 수 없는 상수주소이지만 포인터는 바뀔 수 있다는 점~ 문자의 시작 주소만 알면 모든 찾을 수 있다고 했습니다.맨 뒤에 '\0'이 있고 항..

곱씹어보자 C!_#010_ 삽잡이의 두서없이 막말하는 문자열(1)

안녕하십니까 삽잡이입니다. 오늘도 과감하게 시작합니다. 어제 배운 포인터에 대해 잠시 생각해보고 본론으로 들어가겠습니다. 1234567891011121314151617181920/* 안보실 분들은 Jumping 하셔도 됩니다.우선 모든 포인터의 기준은 IDE 환경에서 6 bit OS 설정을 해놓지 않는 한 32 bit 크기를 사용합니다.즉, 포인터의 크기는 4 byte라는 것이죠.모든 프로그램에는 데이터의 값과 위치 둘중 하나를 변수에 담을 수 있다고 했습니다.아무튼... 데이터 타입을 보도록 해봅시다.int 정수형 변수int* 1차 포인터 int** 2차 포인터 (Pointer to Pointer) 셋은 똑같은 int형 변수라고 할 수 있을까요?정답은 No 입니다.int형은 4 byte 크기의 정수를 ..

[삽잡이] 시그니처란?

함수를 선언해야지 함수를 사용할 수 있다. 그러기 위해서는 함수를 우선 선언 해줘야하는데, 그러려면 함수의 정보를 알아야한다. 함수의 정보를 알기위해 시그니쳐가 필요하다는 것+함수의 원형에서 함수와 인자들의 이름을 제외한 나머지를 시그니처라고 부른다. 자세하게, 리턴값의 데이터형, 인자의 갯수, 각 인자의 데이터형과 순서가 있다.int sum( int a, int b, double c); int sum2 ( int, int, double);이 두 함수는 시그니처가 같다. 시그니처가 같은 함수들은 같은 함수포인터에 의해 상호호환이 가능하다.

곱씹어보자 C!_#009_ 삽잡이의 두서없이 막말하는 아스키코드

문자 인코딩에 대해서 혹시 아시나요? 문자나 기호들의 집합을 컴퓨터에서 저장하거나 통신에 사용할 목적으로어떠한 특정 표준적인 형태로 변환하는 것 즉, 부호화하는 방법을 문자 인코딩이라고 합니다. 예... 맞습니다 위키백과와 네x버가 알려줬습니다. 여긴 다x 티스토리니까... 아하하 문자 인코딩의 예로써는 대표적으로 많이들 들어보신 바로 아스키코드(ASCII) 가 있죠. 많은 인코딩들 중에서 왜 ASCII 코드를 언급했느냐 하면 말입니다,C언어에서는 ASCII 코드를 사용하기 때문이죠. 우리가 C언어를 하면서 적어도 알아야 하는 대표적인 아스키 코드 넘버들이 있습니다.A(65), a(97), 0(48)뭐 이 셋만 알면 나머지 것들은 알기 쉽겠죠... 다른 인코딩들에서는 정수와 문자를 구분합니다.넌 문자고!..

곱씹어보자 C!_#008_ 삽잡이의 두서없이 막말하는 C언어의 꽃! 포인터

훗날... 허접한 프로그램이 아니라 좀 제대로 된 프로그램을 만든다면...C언어에서 만큼은배열과 포인터 없이 프로그램을 작성할 수 없다고 합니다...그만큼 C언어의 꽃인 포인터... 어김없이 두서 없는 주절주절 시작합니다. 모든 프로그램에는 데이터를 표현하는데 두가지 방식이 있다고 합니다.첫번째, 주소 내에 들어있는 메모리의 값 (value) 두번째, 주소즉, 값(value)에는 위치정보와 실제 데이터 정보가 들어갈 수 있습니다. 두가지 방식이 있다고 해도, 컴퓨터 용어로는 둘다 값(value)라고 합니다.어찌됬던 둘다 내용물이니까요... 하지만 C언어 그리고 다른 프로그래밍 언어에서는 둘을 구분합니다.예를들어 int n = 10; 이라면 10은 데이터 값이며, &n의 값은 데이터의 위치(주소)라고 할 ..