C언어 34

곱씹어보자 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!_#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의 값은 데이터의 위치(주소)라고 할 ..

곱씹어보자 C!_#007_ 삽잡이의 두서없이 막말하는 제어문 반복문

C언어에서 제어문과 반복문은 대표적으로 3개씩 있습니다. 제어문에는...if(), if-else, switch-case반복문에는...for, while, do-while 이렇게요! 그런데요... 우선 제어문을 사용하는 이유는 뭘까요?프로그램은 순차적인거 아시죠?예를 들어서 1. 소리질러2. 밥먹자3. 잠좀자자 이렇게 3줄이 작성되있다면, 프로그램은 1->2->3 순서대로 진행이 되지요.이때, 제어문은 무엇인가 판단을 해서 문장의 순서를 제어하고자 할 때 사용한답니다. 아하... 제어문을 사용한다면 코드를 다 진행하는 것이 아니라,조건에 맞게 순서를 건너 뛰어 필요한 문장으로 접근할 수 있겠습니다. if 문의 종류는 계단식 스타일에서 자주 사용하고요switch 문 같은 경우에는 제어문장은 제어문장인데 분기..

곱씹어보자 C!_#006_삽잡이의 두서없이 막말하는 연산자들

오늘은 몇몇의 연산자를 알아보고자 합니다. 우선 첫번째! '&'엔퍼센트... 주소 연산자입니다. 주소라... 메모리에 대해 지난 글을 보셨으리라 생각하며바로 들어가보도록 하겠습니다. char c = 10;int n = 10; 한번 해석해보세요! 3초 드립니다. 하나 둘 셋! 제가 말씀드리자면,C라는 이름을 가지고 10이라는 값을 가진 변수를 선언했네요.근데 데이터 타입은 char 형인것으로 보아 1 Byte이군요... 따라서 주소를 하나 갖겠네요.(1 Byte 당 주소 하나!)그 아래 친구는 4 Byte 짜리 int형 변수군요... 주소를 4개 갖겠어요. 음 아무튼 그것은 그렇고 그럼 &은 뭘 의미하는 것일까요... 바로 변수의 주소를 의미하는 것입니다./*변수 어떻게 생긴 줄 아시죠? 한번 그려볼까요?..

곱씹어보자 C!_#005_ 삽잡이의 두서없이 막말하는 메모리와 데이터

메모리는 논리적으로 기억공간을 나타내며, 물리적으로는 기억 장치라고 표현됩니다.주로 사용되는 기억장치는 RAM이라고 했었습니다. 메모리에는 아주 중요한 두가지의 용어가 있습니다.바로 value와 address인데요.메모리에 저장되는 정보! 이것을 값(value)라고 부르며, 위치들을 주소(address)라고 부릅니다. 위치 즉, 주소는 0번 부터 시작합니다.저장되는 단위는 1 Byte이며, 그렇다는 것은 저장될 수 있는 내용물은 1 Byte라고 할 수 있죠.한칸에 8 Bit!! 저장되어 있는 값들이 의미를 띄면 데이터가 됩니다.010101 의미없이 나열된 저장 값들은 아무 의미가 없지만,컴퓨터와 약속이 된 010101 은 의미가 있으니 데이터라고 할 수 있죠. 또한, 어떤 정보를 표현하는 것을 데이터라고..

곱씹어보자 C!_#004_ 삽잡이의 두서없이 막말하는 데이터 타입의 등장

프로세스 메모리 구조에 대해서 인터넷에서 찾아보시면 어마어마하게 복잡합니다... 이해를 원하는 삽잡이는 쉽게 가겠습니다. Process 메모리ㅡㅡㅡㅡㅡㅡㅡㅡ| || | > (1)| | | || |ㅡㅡㅡㅡㅡㅡㅡㅡ| || | > (2)| | | | | |ㅡㅡㅡㅡㅡㅡㅡㅡ (1)에는 이전시간에 언급한 바로 명령어 영역이라고 보시면 됩니다.한번 컴파일 되면 변경이 안되죠.변경이 됬다면 그건 바로 바이러스입니다~! 아무튼... 제가 조금 신경써서 보고자하는 것은 바로 (2) 데이터 영역입니다. 데이터 영역에서는 메모리의 주소가 중요합니다.메모리안에 필요한 내용을 꺼내기 위해서는바로 주소를 이용하기 때문이죠!(주소의 저장크기는 1 Byte) 그런데 말입니다... 데이터 영역에는 여러 종류의 데이터들이 있을텐데요.....