C 언어 함수포인터와 함수포인터배열

함수를 인자로 넘겨주기 위해서 사용된다. callback의 개념과 비슷하다고 보면 될 것 같다.. #include <stdio.h> int add(int value1, int value2); int substract(int value1, int value2); int multiply(int value1, int value2); int (*func_array[3])(int, int) = {add, substract, multiply}; int main() {         int (*pfunc_pointer) (int, int) = NULL;         int result = 0;         int value1 = 0;         int value2 = 0;         int type =0;         printf("첫 번째 값은? " );         scanf("%d", &value1);         printf("두 번째 값은? ");         scanf("%d", &value2);         printf("계산 방식(0: 더하기, 1: 빼기, 2: 곱하기)은 ? ");         scanf("%d", &type);         if(type >= 0 && type <= 2)         {          ...

C 언어 더블포인터와 이차원배열의 활용

행과 열의 입력받아서 이차원 배열을 동적으로 할당한후 사용자 인풋을 받는다. 그리고 나서 이차원 배열안에서 최대값과 최소값을 출력해주는 코드 #include <stdio.h> #include <stdlib.h> #include <string.h> void inputForRowCol(int* row, int* col); int** alloc_dyn_intArray(int row, int col); void setValueArray(int** ppResult, int row, int col); void printArray(int** ppResult, int row ,int col); void freeArray(int** ppResult, int row); void getMaxValue(int** ppResult, int row, int col, int* maxVal); void getMinValue(int** ppResult, int row , int col, int* minVal); int main() {         int row = 0, col = 0;         int maxVal = 0, minVal = 0;         int** ppResult = NULL;         inputForRowCol(&row, &col);         ppResult = alloc_dyn_intArray(row, col);         setValueArray(ppResult, row , col);         printArray(ppResult, row, col);         ge...

C 언어 메모리 재할당 realloc() 함수, 초기화 함수 memset() 함수

입력받는 count 변수의 크기가 이전 count보다 값이 크면 배열의 메모리를 count 변수의 크기로 재할당하는 방식의 코드 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() {         int count = 0;         int previousCnt = -1000000000;         int* dynamicIntegerArray = NULL;         int* reallocArray = NULL;         int temp = 0;         do         {                 printf("원소의 개수는 ? (0 이하 값을 입력하면 종료됩니다) ?");                 scanf("%u", &count);                 if(count > 0)                 {                         if(count > previousCnt)                     ...

C 언어 메모리 동적할당 malloc() 함수 메모리해제 free() 함수를 활용

0을 입력하기 전까지 계속해서 학생 수를 받고 학생 당 점수를 입력받아 배열을 관리하며 입력이 끝나면 총점과 평균점수를 출력해주는 코드이다. #include <stdio.h> #include <stdlib.h> void getCountInput(int* count){         printf("학생 수는 ?(0 이하의 수를 입력하면 종료됩니다 :  ");         scanf("%u",count); } void getScoresInput(int* array, int c) {         signed int temp = 0;         for(int i =0; i<c; i++){                 printf("%d 번째 학생의 점수는 ? ",i+1);                 scanf("%u",&temp);                 *(array + i ) = temp;         } } void getSumAndAvg(int* array, int c, int* sum, double* avg) {         for(int i =0; i< c; i++){                 *sum += *(array + i);         }         if( 0 != c)...

C 언어 함수의 활용과 상수 포인터

print_array_reverse는 double형 포인터 변수를 받아 배열의 끝에서 부터 접근해서 출력해주는 함수이다. 여기서 중요한 개념이 있는데, 상수 포인터이다. const double* pArray 는 포인터 변수가 가리키는 변수를 상수화 한다는 의미로 포인터 변수는 다른 주소를 가리킬수 있지만, 가리키고 있는 값을 변경할 수 없게된다. ex) const int* pint_value = &int_value; pint_value = &int_value2;  //가능함!! *pint_value = 10; double* const pArray 처럼 const위치가 바뀐다면 포인터 변수의 상수화로 pArray는 다른 주소를 가리킬수 없게된다. ex)int* const pint_value = &int_value; pint_value = &int_value2; // 오류 발생!! *pint_value = 10;            // 가능함!! #include <stdio.h> void print_array_reverse(const double* pArray, int size); int main() {         double double_array[] = {10.0 , 20.1, 30.2, 40.3};         int size = sizeof(double_array) / sizeof(double);         print_array_reverse(double_array, size);         return 0; } void print_array_reverse(const double* pArray, int size) { ...

C 언어 포인터 변수와 배열 Feat. scanf()

포인터 변수 활용과 사용자 인풋값을 받아 배열에 접근하는 코드 #include <stdio.h> int main() {         int my_int_array[] = {10,20,30,40,50,60,70};         int *pint_value = &my_int_array[0];         int index = 0;         int count = sizeof(my_int_array)/sizeof(int);         printf("인덱스 값은(0~%d)? ",count-1);         scanf("%d", &index);         if ( index >= 0 && index < count ){                 pint_value = pint_value + index;                 printf("인덱스 %d 에 해당하는 값은 %d 입니다. \n", index, *pint_value);         }         else         {                 printf("인덱스 값은 0 보다 크고, %d보다 작아야 합니다. \n", count);         }     ...

C 언어 문자열 함수 strstr() 사용한 문자열 찾기

#include <stdio.h> #include <string.h> int main() {         char str_source[1024] = {0};         char str_find[1024] = {0};         char *pFind = NULL;         int count = 0;         printf("첫 번째 문자열은 ? ");         scanf("%s",str_source);         printf("찾고 싶은 문자열은 ? ");         scanf("%s",str_find);         if(strlen(str_source) <= 0 || strlen(str_find) <= 0 )         {                 printf("공백 문자열은 안되요!\n");                 return 0;         }         pFind = strstr(str_source, str_find);         while (NULL != pFind)         {                 coun...