C 언어
포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다. 주소를 참조함으로써 포인터는 가리키는 데이터에 간접적으로 접근하거나 수정할 수 있습니다. 이 간접 참조는 큰 데이터 구조나 동적 메모리 할당을 다룰 때 특히 효율적인 메모리 사용과 빠른 실행을 가능하게 합니다.
정수 변수 v를 고려해 봅시다:
int v = 0;값은 0이지만, 모든 변수는 고유한 주소도 가집니다. 주소 연산자(
&)로 이 주소를 구할 수 있습니다:
printf("Address of v: %p\n", (void*)&v);
출력된 주소는 무작위 16진수처럼 보이며 실행마다 다를 수 있습니다.
아래는 포인터가 주소를 저장하는 방법을 보여주는 간단한 프로그램입니다:
#include <stdio.h>
int main() {
int v = 0;
int *y = &v; // y는 v의 주소를 가짐
printf("Address stored in y: %p\n", (void*)y);
printf("Value pointed to by y: %d\n", *y);
return 0;
}
일반적 출력:
Address stored in y: 0x7ffeefbff5c8 Value pointed to by y: 0
포인터 선언 패턴:
데이터_타입 *포인터_이름;여기서
데이터_타입은 포인터가 참조할 데이터 타입입니다. 유효한 예시:
int *ptr_int; // int 포인터 double *ptr_double; // double 포인터 char *ptr_char; // char 포인터
선언 후 포인터는 유효한 주소로 초기화되어야 합니다. 초기화되지 않은 포인터 사용은 미정의 동작을 유발합니다. 초기화 문법:
포인터 = &변수;예시:
#include <stdio.h>
int main() {
int a = 10;
int *p = &a;
printf("Address in p: %p\n", (void*)p);
printf("Value via p: %d\n", *p);
return 0;
}
NULL을 명시적으로 가지며 유효한 주소가 없음을 나타냄. 초기화나 센티넬 값으로 유용.
int *p = NULL; // p는 널
void*)으로 모든 데이터 타입의 주소를 담을 수 있음. 역참조 전 특정 타입으로 캐스팅 필요.
void *p = &intVar; // 제네릭 주소
int *p; // 미정의
printf("%d\n", *p); // 안전하지 않음직접 접근은 변수명을 직접 사용; 간접 접근은 포인터 사용. 예시:
#include <stdio.h>
int var = 1;
int *ptr = &var;
printf("Direct: %d\n", var); // 1
printf("Indirect: %d\n", *ptr); // 1
*ptr = 48; // 포인터로 수정
printf("After change, indirect: %d\n", *ptr); // 48
포인터가 배열 요소를 가리킬 때 정수 더하기/빼기는 바이트가 아닌 요소 수만큼 포인터를 이동시킵니다. 예시:
int arr[5] = {1,2,3,4,5};
int *p = arr; // arr[0] 가리킴
for (int i = 0; i < 5; ++i) {
printf("%d\n", *p);
++p; // 다음 요소로 이동
}
핵심 규칙:
*와 &는 다른 단항 연산자와 같은 우선순위++*p 또는 (*p)++ 사용포인터는 배열 요소 순회에 간결한 방법을 제공:
int a[5] = {1,2,3,4,5};
int *p = a; // &a[0]과 동일
for (int i = 0; i < 5; ++i) {
printf("%d\n", *p++); // 1부터 5까지 출력
}
문자열은 널 문자로 끝나는 char 배열. 포인터 조작으로 문자열 순회가 간단해짐:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello Guru99!";
char *p = str;
printf("First character: %c\n", *p);
++p;
printf("Next character: %c\n", *p);
// 전체 문자열 출력
for (int i = 0; i < strlen(str); ++i) {
printf("%c\n", *p++);
}
return 0;
}
malloc, free)의 기초C 언어
용접이란? 용접은 열, 압력, 또는 둘 다를 이용해 두 개 이상의 부품을 융합해 냉각되면서 접합부(이음)를 형성하는 제조 공정입니다. 금속과 열가소성 수지에 주로 쓰이며 목재에도 적용 가능합니다. 완성된 용접 이음을 용접부(weldment)라 부릅니다. 특수 공정·기술이 필요한 재료도 있으며, 비용접성(non-weldable)이라 불리는 재료도 있습니다(공학 용어). 접합 대상 모재(base material)와 이음 형성을 위해 첨가되는 필러/소모재(fillers/consumables)로 구성되며, 형상에 따라 기재, 튜브, 플럭스
유압 모터는 가압 유체를 이용해 물체를 회전시키는 엔진으로, 단동 피스톤, 복동 피스톤, 회전 피스톤, V형 등 4가지 유형이 있습니다. 각 유형마다 장단점이 뚜렷하므로 용도에 맞는 선택이 중요합니다. 유압 모터란? 유압 모터는 유압을 동력원으로 사용하는 모터의 일종입니다. 회전 엔진의 한 형태로, 물, 오일 등 유체를 이용해 로터를 밀거나 당겨 회전시킵니다. 운송, 건설, 제조 등 다양한 분야에서 활용됩니다. 4가지 유압 모터 유형 1. 단동 피스톤 유압 모터 가장 일반적인 유형으로 단일 피스톤으로 유체를 이동시킵니다. 조작이 쉽