首页
社区
课程
招聘
[分享]C语言基础七-结构体
发表于: 2021-5-24 17:55 3858

[分享]C语言基础七-结构体

2021-5-24 17:55
3858

short、int、long、char、float、double这六个关键字代表C语言里的六种基本数据类型。C语言中,还提供了struct结构体数据类型,结构体是一种构造类型,由若干成员组成,每个成员可以是一个基本数据类型也可以又是一个构造类型,因此结构体可以用来存放一组不同类型的数据。例如:

我们定义了一种Student结构体数据类型和一种pStudent结构体指针数据类型,可以使用Student、pStudent定义变量。

我们知道,一个结构体可以有多个成员,当我们定义结构体的时候,底层会根据我们的结构体成员算出对齐值,然后根据对齐值大小申请内存。

当传入tagStu给函数的时候,函数中的tagStu相当于重新申请的变量,拷贝外部的实际参数tagStu,我们在函数内部修改tagStu不会改变实际参数的值,这就是传值。如果我们想修改实际参数的值,需要把地址传过去,函数拷贝的是地址,根据地址修改里面的值,就可以改变实参的值,这就是传地址。传值会消耗内存,传地址效率更高。

typedef struct _Student
{
    int nId;
    char szName[16];
    double dbHeight;
}Student,*pStudent;
typedef struct _Student
{
    int nId;
    char szName[16];
    double dbHeight;
}Student,*pStudent;
typedef struct _Student
{
    int nId;
    char szName[16];
    double dbHeight;
}Student,*pStudent;
 
/*变量的定义*/
//1.结构体
Student tagStuA;
//2.指针
pStudent pTagStuB;
Student* pTagStuC;
 
/*变量的初始化*/
//1.大括号初始化
Student tagStuC = {202101,"xiaoxin",100.0};
//1.单个成员赋值
tagStuC.dbHeight = 101.0;
//3.同结构体变量可以给同结构体变量赋值
Student tagStuD = tagStuC;
pStudent pTagStuE = &tagStuC;
 
//变量的访问, . 和 -> 运算符的优先级比 * 运算符高
printf("%s\n",tagStuC.szName);
printf("%s\n",pTagStuE->szName);
typedef struct _Student
{
    int nId;
    char szName[16];
    double dbHeight;
}Student,*pStudent;
 
/*变量的定义*/
//1.结构体
Student tagStuA;
//2.指针
pStudent pTagStuB;
Student* pTagStuC;
 
/*变量的初始化*/
//1.大括号初始化
Student tagStuC = {202101,"xiaoxin",100.0};
//1.单个成员赋值
tagStuC.dbHeight = 101.0;
//3.同结构体变量可以给同结构体变量赋值
Student tagStuD = tagStuC;
pStudent pTagStuE = &tagStuC;
 
//变量的访问, . 和 -> 运算符的优先级比 * 运算符高
printf("%s\n",tagStuC.szName);
printf("%s\n",pTagStuE->szName);
typedef struct _Student
{
    int nId;
    char szName[16];
    double dbHeight;
}Student,*pStudent;
 
void ChangeValueA(Student tagStu)
{
    tagStu.szName = xiaoxin;
}
 
void ChangeValueB(pStudent pTagStu)
{
    pTagStu->szName = xiaoxin;
}
 
int main()
{
    Student tagStu;
    //传值
    ChangeValueA(tagStu);
    //传地址
    ChangeValueB(&tagStu);
}
typedef struct _Student
{
    int nId;

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//