포인터에 관하여

1. 포인터의 활용

동적할당
void *
특정위치의 저장
포인터함수

2. void *

오직 주소값만 가짐
다른 포인터와 달리 자료형에 대한 정보가 없음
포인터연산 및 메모리 참조 불가



#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <vector>
#include <iostream>
#define MAX_THREAD_NUM 20
using namespace std;
void *func1(void *) {
printf("Thread 1\n");
pause();
}
void *func2(void *) {
printf("Tread 2\n");
pause();
}
void *func3(void *) {
printf("Thread 3\n");
pause();
}
void *func4(void *) {
prinft("Thread 4\n");
pause();
}
int main() {
// 인자가 함수포인터인 vector 생성
vector<void *(*)(void *)> thread_list;
vector<pthread_t> tident(MAX_THREAD_NUM);
int status;
thread_list.push_back(func1);
thread_list.push_back(func2);
thread_list.push_back(func3);
thread_list.push_back(func4);
cout << "등록된 쓰레드 " << thread_list.size() << end1;
for(int i = 0; i < thread_list.size(); i++) {
pthread_create(&tident[i], NULL, thread_list[i], (void *)NULL);
}
cout << "thread Join Wait" << end1;
for(int i = 0; i < tident.size(); i++) {
pthread_join(tident[i], (void **_ &status);
}
return 1;
}
view raw thread hosted with ❤ by GitHub

3. 포인터 함수



#include <stdio.h>
// Function Pointer 포인터 함수
typedef int (*calculatorFunctionPointer)(int, int);
// Plus Function 덧셈 함수
int plus (int argument1, int argument2) {
return argument1 + argument2;
}
// Minus Function 뺄셈 함수
int minus (int argument1, int argument2) {
return argument1 - argument2;
}
// Multiple Function 곱셈 함수
int multiple (int argument1, int argument2) {
return argument1 * argument2;
}
// Division Function 나눗셈 함수
int division (int argument1, int argument2) {
return argument1 / argument2;
}
// 매개변수로 함수포인터를 갖는 calculator 함수
int calculator (int argument1, int argument2, calculatorFunctionPointer func) {
return func(argument1, argument2);
}
int main(int argc, char** argv) {
calculatorFunctionPointer calc = NULL;
int num1 = 0, num2 = 0;
char op = 0;
int result = 0;
scanf(“cal : %d %c %d”, &num1, &op, &num2);
switch(op) {
case ‘+’:
calc = plus;
break;
case ‘-’:
calc = minus;
break;
case ‘*’:
calc = multiple;
break;
case ‘/’:
calc = division;
break;
}
result = calculator(num1, num2, calc);
printf(“result : %d”, result);
return 0;
}
view raw example hosted with ❤ by GitHub

Related Posts:

  • C language - 1. primitive data type(기본 자료형) 1. 변수란?  프로그래밍 언어에서 값을 저장하거나 저장된 값을 읽거나 다른 값을 넣을 수 있는 공간을 할당받는 것을 변수라고 합니다. 이러한 변수들의 크기를 크게 잡으면 광활한 범위의 값을 저장할 수 있겠지만 작은 값을 필요로 하는 변수에 비해 훨씬 큰… Read More
  • C language - 4. string function(문자열 함수)<string.h>의 헤더파일에는 문자열과 관련되있는 함수들을 정의하고 있습니다. 1. 문자열 복사  문자열을 복사하는 함수에는 strcpy()와 strncpy()가 있습니다. strncpy() 함수에서 str3보다 1작은 크기만큼 복사해야… Read More
  • C language - 6. pointer(포인터)1.  메모리와 주소 컴퓨터의 메인메모리는 1byte 단위로 각각 주소가 16진수의 고정된 값이 배정되며 오른쪽 그림을 예를 들어 int(4bytes)형 변수 a를 선언 한다고 했을 때 임의의 연결된 4bytes의 공간에 int형 변수 a가 배정되게 됩니다.… Read More
  • C language - 3. file I/O(파일 입출력) 파일 입력함수에는 getc(), fgetc(), fgets(), fscanf(), fwrite()가 있고 파일 출력함수에는 putc(), fputc(), fputs(), fprintf(), fread()가 있습니다. 1. 텍스트 파일 입출력 #… Read More
  • C language - 2. standard I/O(표준 입출력)1. 표준 입출력  C언어에서 입출력 함수는 표준 입출력함수와 파일 입출력함수로 나뉩니다. 파일 입출력은 외부에서 값을 입력받거나 저장하는 반면에 표준 입력함수는 일반적으로 키보드의 입력을 받고 표준 출력함수는 일반적으로 모니터에 출력을 하게됩니다. 표준… Read More