목록Programming (8)
ipwn
프로그램이 실행 되려면 프로그램이 메모리에 먼저 로드가 되어야 한다. 또, 프로그램에 사용되는 변수들을 저장할 메모리 공간도 필요하다. 메모리 구조에는 대표적으로 1. 코드 (code)영역 2. 데이터 (data)영역 + BSS (Block Stated Symbol) 영역 3. 스택 (stack)영역 4. 힙 (heap)영역 이런 식으로 크게 네 가지, 세세하게 다섯 가지 정도가 있는데, 설명하기에 앞서 먼저 다음 그림은 운영체제가 제공하는 메모리 공간을 표현한 그림이다. 1. 코드 (code) 영역 메모리 낮은 주소에 속하는 코드 영역은 실행할 프로그램의 코드를 저장하는 영역으로 텍스트 영역이라고도 부른다. CPU는 코드 영역에 저장된 명령어를 하나 하나 씩 가져가서 처리하는데, 이러한 코드 영역은 H..
1. 포인터란? 포인터는 메모리의 주소 값을 저장하기 위한 변수를 의미합니다. 그러므로 (주소값 != 포인터) 포인터의 크기는 컴퓨터의 주소 체계에 따라 크기가 결정되는데요 , 32비트 기반 시스템에서는 4 바이트 크기 입니다. (64바이트 기반 시스템에서는 8바이트) 포인터 선언시에 사용되는 연산자는 * 인데, 자료형을 A로 하고 포인터를 선언한다고 하면 A *변수이름이 되는데 예를 들어 int *a; 라고 한다면 int형 a라는 이름의 포인터가 되는 것입니다. 즉 자료형A *b는 A타입의 b라는 포인터 변수가 생성되는 것입니다. 주소 관련 연산자(포인터)로는 &연산자와 *연산자가 있는데 & 연산자는 변수의 주소 값을 반환하는 연산자이고 * 연산자는 포인터가 가르키는 메모리를 참조하는 , 즉 직접적으로..
codeup1602.절대값 구하기 123456789101112131415#includedouble absolutevalue(double n1) { if (n1 line) { return 0; } else { starh(star); printf("\n"); return output(star + 1, line); }}int main() { int input, star = 1; scanf("%d", &input); output(star, input); return 0;}Colored by Color Scriptercs 이 코드는 반복문의 이해를 위한 공부를 할 때 배웠던 별찍기를 재귀함수로 구현해 낸 코드입니다. 이 코드의 동작 방식은 맨 처음 별을 몇개 찍을지 starh함수로 정하는데, n에 대입 된 값 ..
포인터로 swap함수 구현 포인터로 스왑 함수를 구현하라면 아래와 같이 구현 할 수 있는데요, 12345678910111213141516171819202122#includevoid swap(int *n1, int *n2) { int temp; temp = *n1; *n1 = *n2; *n2 = temp;}void swap2(int n1, int n2) { int temp; temp = n1; n1 = n2; n2 = temp;}int main() { int a = 7, b = 9; printf("a=%d b=%d\n", a, b); swap2(a, b); printf("a=%d b=%d\n", a, b); swap(&a, &b); printf("a=%d b=%d\n", a, b); return 0;..
1.포인터의 개념 포인터는 어떠한 메모리 값의 주소를 저장하는 변수를 의미 합니다. 쉽게는 데이터의 위치를 가르켜주는 것 입니다. 예를 들어 , 맛스타는 1200원이라는 메모리 값 주소값은 학교의 매점이고, 다른 편의점 CU에 있는 1200원의 과자의 1200원이라는 메모리 값 주소값은 CU인 것 처럼, 이렇게 같은 메모리 값이라도 주소는 각자 다 다르고 , 이 다른 주소를 저장해 주는것을 우리는 포인터라고 합니다. 2.포인터의 변수 선언 방법 1234567#includeint main() { int 맛스타=1200; int *ptr맛스타 = &맛스타; printf("%d원 짜리 맛스타의 주소는 %#x 입니다", 맛스타, ptr맛스타);}Colored by Color Scriptercs 이와 같은 방..
1.string.h 헤더파일 strlen,strcmp,strcpy이 세 함수를 사용하기 위한 헤더파일입니다. 당연한 말이지만 이 세 함수 말고도 더 많은 함수들이 포함되어 있습니다. 2. strlen함수strlen 함수는 한 문자열의 크기를 측정하는 함수입니다. 사용은 아래와 같은 방식으로 이뤄 집니다. 1234567891011#include#includeint main() { int howlong; char input[400]; gets_s(input); howlong = strlen(input); printf("input의 길이는 %d 입니다.", howlong); return 0;}Colored by Color Scriptercs 위 코드를 실행하면 아래와 같은 실행결과가 출력 됩니다. 띄어쓰..
함수란?? 변수 x와 y 사이에 x의 값이 정해지면 따라서 y값이 정해진다는 관계가 있을 때, y는 x의 함수라고 합니다. 이건 이미 알고있는 사실 중 하나일 것 입니다. 그런데 프로그래밍과 함수와는 무슨 관계가 있을까요? 함수(function)란? 함수란 영어 function에서 온 말인데 이 뜻은 "기능"을 뜻합니다. 즉, 기능을 구현하는 부분을 따로 떼어 구현하는 것으로, 구조화 프로그램의 중요한 개념이라 하겠습니다.일단 저에게도 익숙하고 모두에게도 익숙한 main함수로 예를 들어보겠습니다.함수는 이 그림과 같이 반환 자료형, 함수 이름 , 인수 목록으로 나뉘어 집니다. 반환 자료형이란 메인함수에서 1return 0;cs위 코드의 부분을 보면 0을 반환한다라는 것을 알 수 있죠 정수형을..
1. 배열 배열이란?? 동일한 특성을 가지며 일정한 규칙에 따라 몇몇 요소가 나열되어 있는 데이터 집합 배열은 차원을 가지며, 1차원의 목록 또는 벡터, 2차원의 테이블 또는 행렬 등은 컴퓨터에서는 배열로서 표현되어 처리된다고 합니다.이해가 어려울 수 있어서 덧붙여보자면 프로그래밍을 공부하다보면 가끔식 데이터를 한번에 많이 저장해야 하는 경우 (전교생의 시험점수를 입력받아서 평균을 출력해낸다거나 등등) 가 생기는 걸 알 수 있는데요, 아래 코드는 저장하는 데이터수가 17개라는 그렇게 많지않은 수지만 꽤 긴 길이가 생깁니다. 그러니 만약 10000개이상의 데이터를 하나하나 타이핑해서 저장해준다면 데이터를 저장하는데에만 시간이 모두 소진이 되겠죠??? 1int a,b,c,d,e,f,g,h,i,j,k,l,..