Tabla de contenido
1. Definición del tipo de estructura
2. Definición e inicialización de variables de estructura.
3. Acceso a los miembros de la estructura
1. Miembros de acceso variable de estructura
2. El puntero de estructura accede al miembro de la variable.
4. Paso de parámetros de estructura
En la vida real, una cosa tendrá muchos atributos conectados. El lenguaje C introduce un tipo de datos estructurados - estructura
Organizar múltiples datos pertenecientes a una cosa para reflejar su relación interna.
1. Definición del tipo de estructura
Un tipo de estructura es un tipo construido, que se compone de varios miembros, y cada miembro puede ser un tipo de datos básico o un tipo construido.
El nombre de un tipo de estructura se compone de una palabra clave struct y el nombre de la estructura
La forma general de una definición de estructura:
struct nombre del tipo de estructura
{
especificador de tipo 1 nombre de miembro 1;
especificador de tipo 2 nombre-miembro 2;
...
};
struct Stu
{
int age;
int ID;
char name[10];
};
cambio de nombre de tipo typedef
Aviso:
- struct es una palabra clave de estructura y no se puede omitir. El nombre del tipo de estructura se puede omitir y se denomina estructura sin nombre. Los miembros de la estructura pueden ser cualquier tipo de datos básico, así como tipos de matriz y puntero.
- La declaración que define el tipo de estructura debe terminar con ;, preste atención al ; después de {}
- En tiempo de compilación, el sistema no asigna espacio de memoria para el tipo de estructura definido
- El tipo de estructura es el mismo que el de la variable, y el alcance también se divide en global y local.
2. Definición e inicialización de variables de estructura.
struct Point
{
int x;
int y;
}p1;
struct Point p2;
(1) Defina primero el tipo de estructura y luego defina la variable de estructura
struct Stu
{
int age;
char name[10];
};
int main()
{
//struct 结构体类型的名称 结构体变量名的列表;
struct Stu stu1,stu2;
return 0;
}
(2) Definir la variable de estructura al definir el tipo de estructura
struct nombre del tipo de estructura
{
Lista de miembros;
} Lista de nombres de variables de estructura;
struct Point
{
int x;
int y;
}p1,pn;
(3) Definir directamente las variables de estructura
struct
{
int age;
int num;
char sex;
}s1,s2;
La inicialización puede especificar la inicialización de miembros
3. Acceso a los miembros de la estructura
1. Miembros de acceso variable de estructura
Se accede a los miembros de las variables de estructura con el operador punto ( . ). El operador punto toma dos operandos
#include<stdio.h>
#include<string.h>
struct Stu
{
int age;
char name[10];
};
int main()
{
struct Stu s;
s.age = 18;
strcpy(s.name,"zhangsan");
printf("%s %d",s.name,s.age);
return 0;
}
【Resultado】zhangsan 18
También podemos ver desde la depuración
2. El puntero de estructura accede al miembro de la variable.
#include<stdio.h>
struct Stu
{
char name[10];
int age;
};
void Print(struct Stu* ps)
{
printf("name = %s age = %d\n",(*ps).name,(*ps).age);
printf("name = %s age = %d\n",ps->name,ps->age);
}
int main()
{
struct Stu s = {"zhangsan",18};
Print(&s);
return 0;
}
Si solo imprime miembros, no puede pasar la dirección
(Se recomienda pasar la dirección, porque la eficiencia de la operación es alta)
4. Paso de parámetros de estructura
#include<stdio.h>
struct S
{
int data[100];
int num;
};
struct S s = { {1,2,3},100 };
//结构体传参
void print1(struct S s)
{
printf("%d\n",s.num);
}
//结构体地址传参
void print2(struct S *ps)
{
printf("%d\n",ps->num);
}
int main()
{
print1(s);
print2(&s);
return 0;
}
【Resultado】100 100
De acuerdo con el código anterior, la función print2 es mejor
Porque cuando una función pasa parámetros, los parámetros deben colocarse en la pila
Si se pasa un objeto de estructura, la estructura es demasiado grande y la sobrecarga del sistema del apilamiento de parámetros es relativamente grande, por lo que conducirá a una disminución en el rendimiento.
Cuando se pasa la estructura como parámetro, se debe pasar la dirección de la estructura