结构体是个好东西

本文详细介绍了C语言中的结构体,包括如何定义结构体变量、初始化结构体以及使用结构体指针。通过示例展示了如何对结构体数组进行排序,并提供了结构体在内存占用和指针操作方面的知识。内容涵盖了结构体的声明、初始化、内存管理和指针操作,是理解C语言复合数据类型的重要参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

结构体

结构体指的是一种数据结构是C语言中复合数据类型的一类。

结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。

结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。

定义结构体变量

1.

struct  结构体名

{        类型标识符        成员名;

         类型标识符        成员名;

                ......

  };

struct   结构体名    变量名表列;

 

2.

struct  结构体名

{        类型标识符        成员名;

         类型标识符        成员名;

                ......

  }变量名表列;

 

3.

struct 

{        类型标识符        成员名;

         类型标识符        成员名;

                ......

  }变量名表列;

 结构体变量初始化

实例

 

 

 所占内存

结构体类型不占用内存,但结构体变量占用内存。

使用sizeof运算,可以求出运算对象所占的内存空间的字节数目。

sizeof(变量或类型说明符)

结构体指针

struct stuinf
{    int stid;    
    int score;    
}stu [ STNUM ];      
struct  stuinf * p[STNUM];  定义结构体指针

for ( i=0; i<=STNUM-1; i++ ) 

p[i]=&stu[i]  让他指向结构体变量;

(*p[i]).stid 等同于 p[i]->stid 等同于 stu(i).stid

 

结构体排序

定义结构体,再定义一个结构体指针指向这个结构体,通过指针取结构体内部一变量进行排序,改变指针指向,最后按序输出指针所指内容。

#define STNUM   10 
struct stuinf
{	int stid;	
	int score;	
}stu [ STNUM ]; 	 
struct  stuinf * p[STNUM];
int main ( )
{	
	struct stuinf  * ptemp, * p[STNUM];
	int i,j,k;
	for ( i=0; i<=STNUM-1; i++ ) 
	{  
	 	scanf ("%d%d", &stu[i].stid,&stu[i].score);
		p[i]=&stu[i];	      
	}
	
	for ( i =0; i <= STNUM-2; i++ ) 
	{  
		k = i;
		for ( j = i; j <= STNUM-1; j++ )
			if ( (*p[k]).score < (*p[j]).score )   //按照指针p所指的结构体中的score进行排序 
				k=j;
	    if ( k != i )
	 	{  ptemp = p[i];  p[i]=p[k];  p[k]=ptemp; }     //p的指向变了,但是所指向的结构体变量内部没变 
	}
	
	for (i=0; i<=STNUM-1; i++) 
		printf("%d,%d\n", (*p[i]).stid, p[i]->score);
}

就酱,啾咪~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值