산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

C언어 void 포인터 마스터하기: 유연하고 효율적인 코드 구현

프로그래밍 언어에는 코딩을 훨씬 쉽게 만드는 특정 개념이 있습니다. 예를 들어 C 프로그래밍 언어에서 void 포인터는 최종 사용자의 입력으로부터 특정 데이터 유형을 결정합니다. 이로 인해 C언어의 void 포인터에 대해 논의하게 되었습니다.

다른 포인터와 마찬가지로 void 포인터도 유연성을 위한 관련 기능을 가지고 있습니다. 하지만 코딩 시 시간을 절약하고 싶다면 void 포인터가 최적의 선택입니다. 이 포인터를 사용하면 서로 다른 객체 유형을 동시에 저장하고 검색할 수 있습니다. 이어서 C언어에서 void 포인터를 활용한 코딩 기법을 모두 알아보겠습니다.

C언어 void 포인터 마스터하기: 유연하고 효율적인 코드 구현

(프로그래밍 언어 이미지)

1. C언어에서 Void 포인터란?

일반적으로 void 포인터는 관련된 데이터 유형이 없는 포인터입니다. 즉, 빈 컨테이너와 같습니다. 이 기능을 통해 알 수 없는 데이터 유형의 변수 주소를 저장할 수 있습니다.

C언어의 void 포인터 기능은 이를 다른 데이터 유형으로 타입 캐스팅할 수 있게 하여 메모리 할당을 용이하게 합니다. 이후 바이트 단위 메모리 할당과 같은 유연한 기능을 가능하게 합니다. 또한 C언어의 void 포인터는 제네릭 함수를 수행하는 데 도움이 됩니다.

C언어 void 포인터 마스터하기: 유연하고 효율적인 코드 구현

(C 프로그래밍 언어의 간단한 "Hello World" 프로그램)

https://commons.m.wikimedia.org/wiki/File:C_Hello_World_Program.png

2. C언어에서 Void 포인터 작동 원리

전반적으로 포인터 기능은 프로그래밍에 필수적입니다. 적어도 주소 관리와 메모리 할당에서의 중요성을 볼 수 있습니다.

포인터에는 제네릭 포인터와 void 포인터라는 두 가지 유형이 있습니다. 여기서는 void 포인터와 C언어에서의 작동 방식에 집중하겠습니다.

C언어에서 void 포인터를 가지려면 "void" 키워드로 정보를 선언하기만 하면 됩니다.

전반적으로 참조와 역참조는 범용 포인터 개념에서 중요한 역할을 합니다. 여기서 역참조는 포인터 변수에 저장된 값을 얻는 것을 의미합니다.

포인터 값이 사용 가능한 데이터 유형과 연관되지 않은 경우 타입 캐스팅이 옵션이 됩니다.

하지만 void 포인터는 어떤 산술 연산도 지원하지 않습니다. 대신 간접 연산자 "*"를 사용합니다. 따라서 연관된 데이터 유형이 없는 경우 타입 캐스팅이 필수적입니다. 타입 캐스팅은 void 포인터와 함께 선언된 데이터 유형을 연관시킵니다. 그렇지 않으면 프로그램을 실행할 때 컴파일러 오류가 발생합니다.

void 크기는 C언어에서 문자 포인터와 유사합니다. 크기 객체는 포인터 플랫폼에 따라 다릅니다.

이 메모리 관리 함수는 malloc()과 calloc()입니다. 이 함수들은 필요한 데이터 유형의 메모리를 할당하는 데 도움이 됩니다. 어떤 의미에서 메모리 할당은 함수 포인터가 다른 기능을 향상시킬 수 있는 형식을 사용합니다.

C언어 void 포인터 마스터하기: 유연하고 효율적인 코드 구현

(C언어에서 포인터 작동 원리 그림)

https://commons.m.wikimedia.org/wiki/File:C_pointer_3.svg

3. Void 포인터 문법

일반적으로 모든 프로그래밍 기능을 가져오려면 올바른 문법을 사용해야 합니다. 따라서 C언어에서 void 포인터의 문법은 다음과 같습니다:

void *pointer_name;

여기서 "void"는 포인터 유형의 키워드입니다. 포인터의 이름을 지정하고 주소 할당을 제공합니다.

아래 예제를 살펴보겠습니다:

int b = 6
char c = 'z';

따라서 void 포인터 변수를 포함하는 경우:

void *p = &b; // void 포인터가 정수 'b'의 주소를 할당하고 보유
p = &c; // void 포인터가 문자 'c'의 주소도 보유

더 나아가 몇 가지 문법 예제를 살펴보겠습니다:

int i = 6; // 정수 변수 초기화
int *p; // 정수 포인터 선언
void *ptr; // void 포인터 선언
float *fp; // 부동소수점 포인터 선언
p = fp; // 유효하지 않은 포인터
ptr = p; // 유효한 포인터
fp = &i; // 유효하지 않은 포인터
ptr = &i; // 유효한 포인터
ptr = fp; // 유효한 포인터

4. 샘플 코드로 보는 C언어 Void 포인터 예제

이제 아래 코드 조각에서 void 포인터 인수의 예제를 살펴보겠습니다:

샘플 코드 #1

첫 번째 코드 샘플에서는 malloc() 함수 사용법을 보여줍니다:

#include <stdio.h>
#include <malloc.h>
int main()
{
int a = 90;
int *x = (int*)malloc(sizeof(int));
x = &a;
printf("pointed value by x pointer : %d", *x);
return 0;
}

출력

샘플 코드 #2

다음 코드에서는 타입 캐스팅 개념을 보여줍니다.

#include <stdio.h>
int main()
{
void *ptr = NULL; // void 포인터 변수
int *p = NULL; // 정수 포인터 변수
char *cp = NULL; // 문자 포인터 변수
float *fp = NULL; // 실수 포인터 변수
// void 포인터 크기
printf("void pointer size = %d\n\n", sizeof(ptr));
// 정수 포인터 크기
printf("integer pointer size = %d\n\n", sizeof(p));
// 문자 포인터 크기
printf("character pointer size = %d\n\n", sizeof(cp));
// 실수 포인터 크기
printf("float pointer size = %d\n\n", sizeof(fp));
return 0;
}

Output

아래 링크의 C 프로그래밍 void 포인터 코드 동영상도 참고하세요.

https://youtu.be/-503stjWLhc

5. Void 포인터의 용도

void 포인터는 C언어 프로그래밍에서 광범위한 관련성을 가집니다.

더 나은 이해를 위해 아래 코드 샘플을 참조하세요. 주요 용도는 다음과 같습니다:

#include <stdio.h>
void main()
{
int num = 10; // 일반 변수 초기화
void *ptr; // void 포인터 선언
ptr = &num; // ptr 포인터를 num에 연결
printf("The value of integer variable is= %d", *ptr);
}

하지만 이 코드를 실행하면 컴파일 타임 오류가 발생합니다. 동일한 코드에 타입 캐스팅을 사용하여 포인터를 역참조하면 원하는 출력을 얻을 수 있습니다:

#include <stdio.h>
void main()
{
int num = 10; // 일반 변수 초기화
void *ptr; // void 포인터 선언
ptr = &num; // ptr 포인터를 num에 연결
printf("The integer variable value is %d", *(int*)ptr); // 타입캐스팅을 사용한 역참조
}

출력: The integer variable value is 10.

따라서 타입 캐스팅으로 void 포인터를 역참조할 수 있습니다.

포인터 산술 연산은 void 포인터에서 유효하지 않지만, 타입 캐스팅이 이 문제를 해결합니다. 출력은 다음과 같습니다:

C언어 void 포인터 마스터하기: 유연하고 효율적인 코드 구현

(Void 포인터는 데이터 변수의 위치를 드러내어 코딩을 쉽게 만듭니다)

예를 들어 아래 코드를 보세요:

int main(void)
{
// malloc() 함수는 void *를 반환함에 유의
// 뒤이어 char *, int * 등 원하는 데이터 유형으로 타입캐스팅
int *x = malloc(sizeof(int) * n);
}

참고: 위 프로그램은 C언어에서만 컴파일됩니다.

결론

Void 포인터 기능은 일반적으로 필수적인 프로그래밍 도구입니다. 프로그래머들은 관련된 데이터 유형이 없기 때문에 유용하다고 생각합니다. 적어도 다른 값과 데이터 클래스를 서로 가리키는 포인터의 혼란을 없애줍니다. 따라서 void 포인터는 과도한 타입 캐스팅을 줄여줍니다. 제네릭 포인터 데이터 유형도 지원합니다. 따라서 범용 컴파일러이기도 합니다.

C언어에서 void 포인터 작업에 대한 완전한 가이드를 얻으셨습니다. 그러나 문의 사항이나 다른 프로그래밍 리소스가 필요하시면 언제든 연락 페이지를 이용해 주세요.

산업기술

  1. 에너지 절감의 열쇠: 압축 공기 시스템 에어 에너지 오딧(감사)의 결정적 역할
  2. 토크 리미터 완전 해설: 기계 보호와 안전 운전의 핵심
  3. 유압 클램프: 산업 안전 및 효율성의 열쇠
  4. 현대 제조를 위한 산업 문서 디지털화의 필수성
  5. 린 제조 성공의 필수 요소, 안돈(Andon) 시스템
  6. 제작소에 플라즈마 커팅 테이블이 필요한 4가지 핵심 이유
  7. 비즈니스에 워터젯 절단이 필수적인 10가지 결정적 이유
  8. 기계식 아이언워커(Mechanical Ironworker): 정밀 금속 가공을 위한 다기능 머신
  9. 소형 서보 프레스: 정밀 금속 성형을 위한 최적의 선택
  10. 5축 머시닝 센터가 현대 제조업 필수인 이유: 3/4축 비교와 수직 설계의 중요성