Un puntero de estructura se define como el puntero que apunta a la dirección del bloque de memoria que almacena un estructura conocido como puntero de estructura. Las estructuras de datos complejas como listas vinculadas, árboles, gráficos, etc. se crean con la ayuda de punteros de estructura. El puntero de estructura indica la dirección de una estructura en la memoria apuntando la variable a la variable de estructura.
Ejemplo:
C
// C program to demonstrate structure pointer> #include> struct> point {> >int> value;> };> int> main()> {> >struct> point s;> > >// Initialization of the structure pointer> >struct> point* ptr = &s;> >return> 0;> }> |
>
>
En el código anterior s es una instancia de punto de estructura y ptr es el puntero de estructura porque almacena la dirección del punto de estructura.
Accediendo al miembro de la estructura con la ayuda de punteros
Hay dos formas de acceder a los miembros de la estructura con la ayuda de un puntero de estructura:
lanzamiento de excepción java
- Con la ayuda del operador de asterisco (*) o de dirección indirecta y del operador de punto (.).
- Con la ayuda del operador de flecha (->).
A continuación se muestra el programa para acceder a los miembros de la estructura utilizando el puntero de la estructura con la ayuda del operador de punto.
C
// C Program to demonstrate Structure pointer> #include> #include> struct> Student {> >int> roll_no;> >char> name[30];> >char> branch[40];> >int> batch;> };> int> main()> {> >struct> Student s1;> >struct> Student* ptr = &s1;> >s1.roll_no = 27;> >strcpy>(s1.name,>'Kamlesh Joshi'>);> >strcpy>(s1.branch,>'Computer Science And Engineering'>);> >s1.batch = 2019;> >printf>(>'Roll Number: %d
'>, (*ptr).roll_no);> >printf>(>'Name: %s
'>, (*ptr).name);> >printf>(>'Branch: %s
'>, (*ptr).branch);> >printf>(>'Batch: %d'>, (*ptr).batch);> >return> 0;> }> |
>
>Producción:
1>
A continuación se muestra el programa para acceder a los miembros de la estructura utilizando el puntero de la estructura con la ayuda del operador Flecha. En este programa, hemos creado una Estructura Estudiante que contiene variables de estructura s. La estructura Student tiene roll_no, nombre, rama y lote.
C
// C Program to demonstrate Structure pointer> #include> #include> // Creating Structure Student> struct> Student {> >int> roll_no;> >char> name[30];> >char> branch[40];> >int> batch;> };> // variable of structure with pointer defined> struct> Student s, *ptr;> int> main()> {> >ptr = &s;> >// Taking inputs> >printf>(>'Enter the Roll Number of Student
'>);> >scanf>(>'%d'>, &ptr->roll_no);> >printf>(>'Enter Name of Student
'>);> >scanf>(>'%s'>, &ptr->nombre);> >printf>(>'Enter Branch of Student
'>);> >scanf>(>'%s'>, &ptr->rama);> >printf>(>'Enter batch of Student
'>);> >scanf>(>'%d'>, &ptr->lote);> >// Displaying details of the student> >printf>(>'
Student details are:
'>);> >printf>(>'Roll No: %d
'>, ptr->roll_no);> >printf>(>'Name: %s
'>, ptr->nombre);> >printf>(>'Branch: %s
'>, ptr->rama);> >printf>(>'Batch: %d
'>, ptr->lote);> >return> 0;> }> |
>
>
Producción:
Enter the Roll Number of Student 27 Enter Name of Student Kamlesh_Joshi Enter Branch of Student Computer_Science_And_Engineering Enter batch of Student 2019 Student details are: Roll No: 27 Name: Kamlesh_Joshi Branch: Computer_Science_And_Engineering Batch: 2019>