[Linguagem C] Explicação detalhada da estrutura

Índice

1. Definição do tipo de estrutura

 2. Definição e inicialização de variáveis ​​de estrutura

3. Acesso aos membros da estrutura

1. Membros de acesso variável da estrutura

2. O ponteiro da estrutura acessa o membro da variável 

4. Passagem de parâmetros da estrutura


Na vida real, uma coisa terá muitos atributos conectados. A linguagem C introduz um tipo de dado estruturado - estrutura

Organize vários dados pertencentes a uma coisa para refletir seu relacionamento interno.

1. Definição do tipo de estrutura

Um tipo de estrutura é um tipo construído, composto de vários membros, e cada membro pode ser um tipo de dados básico ou um tipo construído.

O nome de um tipo de estrutura é composto por uma palavra-chave struct e o nome da estrutura

A forma geral de uma definição de estrutura:

nome do tipo de estrutura struct

{

        especificador de tipo 1 nome do membro 1;

        especificador de tipo 2 nome do membro 2;

        ...

};

struct Stu 
{
	int age;
	int ID;
	char name[10];
};

renomeação de tipo typedef

Perceber:

  1. struct é uma palavra-chave de estrutura e não pode ser omitida. O nome do tipo de estrutura pode ser omitido e é chamado de estrutura sem nome. Os membros da estrutura podem ser qualquer tipo de dados básico, bem como tipos de matriz e ponteiro
  2. A declaração que define o tipo de estrutura deve terminar com ;,  preste atenção ao ; após {}
  3. Em tempo de compilação, o sistema não aloca espaço de memória para o tipo de estrutura definido
  4. O tipo de estrutura é o mesmo da variável, e o escopo também é dividido em global e local

 2. Definição e inicialização de variáveis ​​de estrutura

struct Point
{
	int x;
	int y;
}p1;
struct Point p2;

 (1) Defina primeiro o tipo de estrutura e depois defina a variável da estrutura

struct Stu 
{
	int age;
	char name[10];
};
int main()
{
	//struct 结构体类型的名称 结构体变量名的列表;
	struct Stu stu1,stu2;
	return 0;
}

(2) Defina a variável da estrutura ao definir o tipo de estrutura

nome do tipo de estrutura struct

{

        lista de membros;

} Lista de nomes de variáveis ​​de estrutura;

struct Point
{
	int x;
	int y;
}p1,pn;

(3) Definir diretamente variáveis ​​de estrutura

struct 
{
	int age;
	int num;
	char sex;
}s1,s2;

A inicialização pode especificar a inicialização do membro 

3. Acesso aos membros da estrutura

1. Membros de acesso variável da estrutura

Membros de variáveis ​​de estrutura são acessados ​​com o operador ponto ( . ). O operador ponto recebe dois 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

Também podemos ver na depuração

 

2. O ponteiro da estrutura acessa o membro da variável 

#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;
}

 Se você apenas imprimir membros, não pode passar o endereço

(Recomenda-se passar o endereço, pois a eficiência da operação é alta)

4. Passagem de parâmetros da estrutura

#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 acordo com o código acima, a função print2 é melhor

Porque quando uma função passa parâmetros, os parâmetros precisam ser colocados na pilha

Se um objeto de estrutura for passado, a estrutura é muito grande e a sobrecarga do sistema de empilhamento de parâmetros é relativamente grande, o que levará a uma diminuição no desempenho

Quando a estrutura é passada como parâmetro, o endereço da estrutura deve ser passado 

Acho que você gosta

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