初始结构体

本文详细介绍了C语言中的结构体,包括如何声明、定义和初始化结构体变量。通过实例展示了结构体在存储不同类型数据组合时的使用,并讨论了栈、堆和静态区的内存管理。还探讨了结构体作为函数参数时的性能考虑,强调了传址方式的优势。
摘要由CSDN通过智能技术生成

结构体是一些值的集合,这些值就是成员变量,每个成员变量可以是不同的类型,当然也可以是结构体类型。

结构体的声明:

struct stu{   //struct ---结构体关键字;stu---结构体标签;struct stu---结构体类型
char name[20];
short age;
char tale[12];//成员变量
char sz[5];}s1,s2,s3;//s1,s2,s3是全局结构体变量
int main(){
struct stu s;//是局部结构体变量
return 0;}

结构体变量的定义和初始化:

struct point {
int x;
int y;
}p1;//声明类型的同时定义变量p1
int main(){
struct point p2;//定义结构体变量p2;
struct point p3={x,y};//定义结构体变量的同时赋值
}
#include<stdio.h>
struct S{
int a;
char c;
char arr[20];
double d;};

struct T{
char ch[10];
struct S s;
char*pc;};


int main(){
char arr[]="hello bit\n";
struct T t={"hehe",{100,'w',"helloworld",3.14},arr};
printf("%s\n",t.ch);//hehe
printf("%s\n",t.s.arr);hello world
printf("%s\n",t.s.d);//3.14
printf("%s\n",t.pc);//hello bit
return 0}

#include<stdio.h>
typedef struct stu{
char name[10];
short age;
char tele[12];
char sex[5];}stu;

void point1(stu tmp){
printf("name:%s\n",tmp.name);
printf("age:%d\n",tmp.age);
prinf("tele:%d\n"tmp.tele);
printf("sex:%d\n",tmp.sex);

void print2(stu*ps){
printf("name:%d\n",ps->name);
printf("age:%s\n",ps->age);
printf("tele:%d\n",ps->tele);
printf("sex:%s\n",ps->sex);}

int main(){
stu s={"李四",40,"12345678912","男”);
print1(s);
print2(&s);
return 0;}//采用print2传址方式更好,因为在函数传参的时候,函数是需要压栈的,如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销更大,会导致性能下降

栈区:局部变量,函数的形式参数,函数调用;

堆区:动态内存分配malloc/free,realloc,calloc;

静态区:全局变量,静态变量。

栈特点:先进后出,后进的先出。

插入一个元素叫压栈,删除一个元素叫出栈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值