분류 전체보기 495

C언어 21강) malloc함수로 메모리 사용하기

포인터는 포인터 변수에 특정 변수의 메모리 주소를 저장하는 방식으로 메모리를 사용하였다. 이번에는 비슷하지만 조금 다른 방법을 소개하겠다. 바로 malloc 함수를 사용하는 것이다. malloc 함수 사용 malloc 함수는 #include 해더 파일 안에 들어 있으므로 사용 전에 반드시 #include 를 입력해줘야 한다. 1) 메모리 할당 ●사용법 포인터 = malloc(크기); ●메모리 할당 코드 예제 #include #include // malloc, free 함수가 선언된 헤더 파일 int main() { int num = 20; // int형 변수 선언 int* numPtr1; // int형 포인터 선언 numPtr1 = # // num의 메모리 주소를 구하여 numPtr에 할당 int..

C언어 20강)+이중포인터

이중 포인터 포인터 변수는 메모리 주소를 저장하기 위해 사용되는 변수라고 하였다. 그렇다면 포인터 변수 자체의 주소는 무엇일까?? 이를 저장하기 위해 이중 포인터라는 개념이 등장한 것이다. ●사용법 자료형 **포인터 변수 이름 ●이중 포인터 코드 예제 #include int main() { int* numPtr1; // 단일 포인터 선언 int** numPtr2; // 이중 포인터 선언 int num1 = 15; numPtr1 = &num1; // num1의 메모리 주소 저장 numPtr2 = &numPtr1; // numPtr1의 메모리 주소 저장 printf("num1 주소: %d\n", numPtr1); //num1 의 주소 출력 printf("numPtr1 주소: %d\n", numPtr2); /..

C언어 20강) void 포인터

앞 강에서 설명한 float , char 등은 자료형이 정해진 포인터이다. 그렇다면 자료형이 정해지지 않은 포인터도 있을까? YES 그것이 바로 void 포인터이다. 보통 C언어에서 자료형을 맞춰주지 않으면 컴파일 경고가 발생하지만, void 포인터에서는 발생하지 않는다. 하지만 void 포인터는 자료형이 정해지지 않았으므로 값을 가져오거나 저장할 크기도 정해지지 않았다. 따라서 void 포인터는 역참조를 하기위해서 캐스트(cast)연산자를 사용해주어야한다. 캐스트연산자란 자료형을 변환할 때 사용하는 연산자이다. (자료형 *)포인터 ●void 포인터 코드예제 #include int main() { int a = 100; char b = 'f'; void* po; printf("■캐스트연산자를 사용해 vo..

C언어 19강 ) 다양한 자료형의 포인터

포인터에 저장되는 메모리 주솟값은 정수형으로 동일하지만 선언하는 자료형에 따라 메모리에 접근하는 방법이 달라진다. 즉, 포인터를 역참조하면 선언한 자료형의 크기에 맞춰서 값을 가져오거나 저장하게 된다. 따라서 다양한 자료형의 포인터가 있는 것이다. ●코드예제 #include int main() { float* number; // float형 포인터 선언 char* character; // char형 포인터 선언 float num = 3.5f; char c1 = 'A'; number = # // num의 메모리 주소 저장 character = &c1; // c1의 메모리 주소 저장 printf("%f\n", *number); // 3.500000 printf("%c\n", *character); /..

C언어 18강)++ 포인터와 문자열/ 문자열 포인터에서 인덱스로 접근하기

C언어에는 문자열을 직접 선언하는 방법이 없다. 따라서 배열이나 포인터를 사용해 문자열을 처리한다. 배열을 사용해 문자열을 처리하는 방법은 abcdefgh123123.tistory.com/31?category=939526 C언어 10강 배열(array)/문자열(char 활용) ●배열(array) 1)정의: 같은 종류의 데이터 타입을 선언하기 위해 구성된 데이터의 집합. *일반변수 선언과의 차이: 일반변수의 경우에는 따로 분리된 변수 이름을 사용하지만, 배열은 변수를 한 abcdefgh123123.tistory.com 여기에 정리해 두었다. 포인터를 활용해 문자열 처리하기 문자는 1바이트 크기의 char에 저장할 수 있지만 문자열은 크기가 1바이트를 넘어서므로 char에 저장할 수 없다. 따라서 문자열은 ..

C언어 18강)+ 포인터 변수 역참조

저번 시간에 주소를 저장하기 위해 포인터 변수를 사용한다고 했다. 그렇다면 포인터 변수의 역참조는 무엇일까? 포인터 변수 역참조 저장된 메모리 주소로 접근하여 거기 있는 값을 참조하는 것. ●사용법 포인터 변수 앞에 *을 넣어 사용 (값을 가져오거나 값을 저장하는 역할을 함) ●역참조로 값을 가져오는 코드 예제 #include int main() { int a, * address; a = 15; address = &a; //&a = a의 주소번호 printf("a의 값: %d\n", a); printf("a의 주소번호 address: %d\n", address); printf("포인터 변수 address의 a값 역참조: %d\n", *address); return 0; } ●역참조로 값을 저장하는 코드 ..

RC 6) 헷갈리는 문법 형용사/부사 구분

형용사 명사의 모양, 색깔, 성질, 크기, 개수 등을 자세하게 설명하거나 꾸며 주는 말. -네이버 백과사전- 1) 보어 자리에 쓰인다. ●5형식 문장 (주어 + 동사 + 목적어 +목적격 보어) ex) she makes me sad. ●2형식 문장 (주어 + 동사 + 보어) ex) she is happy. 2)명사를 수식한다. ex) pretty 부사 문장의 형용사나 동사, 부사를 더 자세하게 설명해 주고 꾸며 주는 역할을 하는 말. -네이버 백과사전- 1) 대부분의 경우 부사가 없어도 문장은 완벽하다. ex) she laughed (eagerly). she laughed. 자체로 완벽한 문장. 2) 대부분의 경우 부사는 명사를 수식하지 않는다. (특히, 문법 문제에서 부사가 명사를 꾸미는 것이 정답이 되..

기타/토익 2020.11.06

우리가 인생이라 부르는 것들 -정재찬- 줄거리/독후감

최지인의 '비정규'. 책의 맨 앞쪽 즈음에 등장하는 시이다. 이 시엔 일자리가 없어 눈치 보는 자식이 있다. 비단 청년들뿐이랴, 고용은 점점 불안해지고, 작금엔 코로나 사태로 수많은 사람들이 일자리를 잃었다. 현대인들은 너도나도 실이 되어야 하나 보다. 생존의 바늘구멍 사이가 아닌 곳은 절벽이니까. 현대인들은 생존을 위한 무한경쟁 속에 점철되어있다. 절벽에 떨어지지 않으려, 앞만 보고 달려가는 우리의 모습은 너무나도 당연한 현실이다. 스펙, 직업, 외모 , 소비 등의 경쟁 속에서 우리는 인생의 다른 가치들을 놓쳐버리진 않을까? '우리가 인생이라 부르는 것들'이라는 책엔 인생 테마 속의 중요한 가치들에 대한 지혜와 통찰이 담겨있다. 인생에 대해 성찰하며 그 의미를 찾아가는 과정에 굉장히 큰 도움이 될 책이..

기타/독서 2020.11.05

C언어 18강 쉽게 이해하는 주소와 포인터 설명

포인터 변수: 메모리 주소를 저장하기 위해 사용하는 변수 ●사용법 일반적인 변수와 달리, 변수 앞에 ' * '를 붙여 사용한다. ●헷갈리는 이유 주소와 값이 다르다는 것을 이해하지 못했기 때문이다. 따로 나누어서 생각해보면 쉽게 이해할 수 있다. ●비유로 이해하기 설명에 앞서, 나는 설명에서 번호와 값을 구분하여 설명하고 있음을 명심해야 한다. 주소는 사물함에 이미 지정되어 있는 번호, 변수는 내가 지정한 이름, 값은 사물함에 넣은 물건으로 치환해서 생각해보자. 주소 = 사물함 번호 변수 = 내가 지정한 이름 값 = 물건 자, 일단 먼저 사물함에 이미 번호가 지정되어있다. 이 번호는 내가 지정한 번호가 아님을 명심하자. 143534664 225325234 31212323 412323 5544366 654..

C언어 17강 다차원 배열

다차원 배열: 배열의 개수가 2개 이상일 때를 다차원 배열이라고 부른다. ●2차원 배열 ●선언방법예시 int 배열명[3][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}} ; ↗ ↖ 행 열 2차원 배열의 배열명 타입을 'int', 배열명을 'data', 배열의 크기를[3행][5열]로 선언하여, 배열 요소의 초기값을 대입하면 메모리 공간에는 다음과 같이 저장된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ●2차원 배열 코드출력예제 #include int main() { int data[3][5] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15} }; int hang, yeol; print..