728x90
포인터는 컴퓨터 메모리에 저장된 값의 주소를 가리키는 데 사용됩니다. 위치에 저장된 값을 가져오는 것은 포인터 역참조로 부르고 있습니다. 포인터는 다음과 같은 반복적 프로세스들의 성능을 향상시킵니다:
- 문자열 횡단(Traversing String)
- 룩업 테이블
- 제어 테이블
- 트리 구조
포인터 상세 내용
- 포인터 산술 연산: 포인터에 사용할 수 있는 산술 연산자는 ++, --, +, - 4개입니다.
- 포인터 배열: 여러 포인터를 보유하도록 포인터의 배열을 정의할 수 있습니다.
- 포인터의 포인터: C는 포인터의 포인터 등을 허용합니다.
- C의 함수 포인터 전달: 참조 또는 주소로 인수를 전달하면 전달된 인수가 호출 함수에서 호출 된 함수에 의해 변경될 수 있습니다.
- C의 함수에서 포인터 반환: C에서는 함수가 로컬 변수, 정적 변수 및 동적으로 할당된 메모리에 대한 포인터 또한 반환할 수 있습니다.
프로그램
포인터
#include <stdio.h>
int main( )
{
int a = 5;
int *b;
b = &a;
printf ("value of a = %d\n", a);
printf ("value of a = %d\n", *(&a));
printf ("value of a = %d\n", *b);
printf ("address of a = %u\n", &a);
printf ("address of a = %d\n", b);
printf ("address of b = %u\n", &b);
printf ("value of b = address of a = %u", b);
return 0;
}
결과:
value of a = 5
value of a = 5
address of a = 3010494292
address of a = -1284473004
address of b = 3010494296
value of b = address of a = 3010494292
포인터의 포인터
#include <stdio.h>
int main( )
{
int a = 5;
int *b;
int **c;
b = &a;
c = &b;
printf ("value of a = %d\n", a);
printf ("value of a = %d\n", *(&a));
printf ("value of a = %d\n", *b);
printf ("value of a = %d\n", **c);
printf ("value of b = address of a = %u\n", b);
printf ("value of c = address of b = %u\n", c);
printf ("address of a = %u\n", &a);
printf ("address of a = %u\n", b);
printf ("address of a = %u\n", *c);
printf ("address of b = %u\n", &b);
printf ("address of b = %u\n", c);
printf ("address of c = %u\n", &c);
return 0;
}
결과:
value of a = 5
value of a = 5
value of a = 5
value of a = 5
value of b = address of a = 2831685116
value of c = address of b = 2831685120
address of a = 2831685116
address of a = 2831685116
address of a = 2831685116
address of b = 2831685120
address of b = 2831685120
address of c = 2831685128
구조체는 메모리 블록에서 하나의 이름으로 배치될 변수의 그룹화된 목록을 정의하는 복합 데이터 유형입니다. 구조체에 대해서는 하나의 포인터를 사용하여 그안의 각가의 변수들에 접근할 수 있습니다.
문법:
struct structure_name
{
data_type member1;
data_type member2;
.
.
data_type memeber;
};
잇점
- 다양한 데이터 유형의 변수를 가질 수 있습니다.
- 다양한 유형의 속성을 포함하는 객체를 만들 수 있습니다.
- 프로그램 간에 데이터 레이아웃을 재사용할 수 있습니다.
- linked lists, 스택, 큐, 트리, 그래프 등과 같은 다른 데이터 구조를 구현하는 데 사용됩니다.
프로그램
#include<stdio.h>
#include<conio.h>
void main( )
{
struct employee
{
int id ;
float salary ;
int mobile ;
} ;
struct employee e1,e2,e3 ;
clrscr();
printf ("\nEnter ids, salary & mobile no. of 3 employee\n"
scanf ("%d %f %d", &e1.id, &e1.salary, &e1.mobile);
scanf ("%d%f %d", &e2.id, &e2.salary, &e2.mobile);
scanf ("%d %f %d", &e3.id, &e3.salary, &e3.mobile);
printf ("\n Entered Result ");
printf ("\n%d %f %d", e1.id, e1.salary, e1.mobile);
printf ("\n%d%f %d", e2.id, e2.salary, e2.mobile);
printf ("\n%d %f %d", e3.id, e3.salary, e3.mobile);
getch();
}
이상.
728x90
'프로그래밍' 카테고리의 다른 글
[Java] DTO (Data Transfer Object) (0) | 2022.12.24 |
---|---|
[Java]문자 반복 찾기 없이 가장 긴 하위 문자열 찾기 (0) | 2022.12.21 |
[C#] 네트워크 스니퍼 및 분석기 프로그램 - 2부 (0) | 2022.12.16 |
[C#] 네트워크 스니퍼 및 분석기 프로그램 - 1부 (0) | 2022.12.15 |
빠른 2:1 이미지 축소(축소) (0) | 2022.12.14 |