[Lenguaje C] Estructura Explicación detallada

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:

  1. 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.
  2. La declaración que define el tipo de estructura debe terminar con ;,  preste atención al ; después de {}
  3. En tiempo de compilación, el sistema no asigna espacio de memoria para el tipo de estructura definido
  4. 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 

Supongo que te gusta

Origin blog.csdn.net/qq_72505850/article/details/132207842
Recomendado
Clasificación