구조에 대한 포인터는 전체 구조의 주소를 보유합니다.
주로 연결 리스트, 트리, 그래프 등과 같은 복잡한 데이터 구조를 만드는 데 사용됩니다.
구조체의 멤버는 화살표 연산자( -> )라는 특수 연산자를 사용하여 액세스할 수 있습니다.
선언
다음은 구조체에 대한 포인터 선언입니다 -
struct tagname *ptr;
예를 들어, struct 학생 *s;
액세스
다음을 사용하여 구조체에 대한 포인터에 액세스할 수 있습니다. -
Ptr-> membername;
예:s->sno, s->sname, s->marks;
예시
다음은 구조체에 대한 포인터에 액세스하는 C 프로그램입니다 -
#include<stdio.h> struct classroom{ int students[7]; }; int main(){ struct classroom clr = {2, 3, 5, 7, 11, 13}; int *ptr; ptr = (int *)&clr; printf("%d",*(ptr + 4)); return 0; }
출력
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -
11
설명
여기에서 포인터 변수 ptr 객체 clr의 첫 번째 값 2의 주소를 보유합니다. 그러면 포인터 변수의 주소가 4씩 증가하고 마지막으로 값이 표시됩니다.
예를 들어,
*(ptr + 0) = 2 *(ptr + 1) = 3 *(ptr + 2) = 5 *(ptr + 3) = 7 *(ptr + 4) = 11 *(ptr + 5) = 13
구조체에 대한 포인터에 대해 알아야 할 또 다른 간단한 예를 고려하십시오 -
예시
struct student{ int sno; char sname[30]; float marks; }; main ( ){ struct student s; struct student *st; printf("enter sno, sname, marks :"); scanf ("%d%s%f", & s.sno, s.sname, &s. marks); st = &s; printf ("details of the student are\n"); printf ("Number = %d\n", st ->sno); printf ("name = %s\n", st->sname); printf ("marks =%f", st->marks); getch ( ); }
출력
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -
enter sno, sname, marks :1 bhanu 69 details of the student are Number = 1 name = bhanu marks =69.000000