C++ 结构体指针 结构体做函数参数

1、结构体指针
作用:通过指针访问结构体中的成员。
利用操作符:可以通过结构光指针访问结构体属性。
示例:

#include <iostream>
using namespace std;

/// <summary>
/// 定义学生结构体
/// </summary>
struct student
{
    string name;
    int age;
    int score;
};

int main()
{
    //创建学生结构体变量
    struct student s = { "张三",18,100 };
    //通过指针指向结构体变量
    student* p = &s;
    //通过指针访问结构体变量中的数据
    cout << "姓名:"<<p->name << "年龄:" << p->age << "成绩:" << p->score << endl;
    system("puase");
}

2、结构体嵌套结构体
作用:结构体中的成员可以使另一个结构体。
例如:每个老师辅导一个学员,一个老师的结构体中,记录一个学生的结构体。
示例:

#include <iostream>
using namespace std;

/// <summary>
/// 创建学生结构体
/// </summary>
struct student
{
    string name;
    int age;
    int scroe;
};

/// <summary>
/// 定义老师结构体
/// </summary>
/// <returns></returns>
struct teacher
{
    int id;
    string name;
    int age;
    struct student stu;//辅导的学生
};

int main()
{
    //结构体嵌套结构体
    //创建老师
    teacher t;
    t.id = 10000;
    t.name = "老王";
    t.age = 50;
    t.stu.name = "小李";
    t.stu.age = 20;
    t.stu.scroe = 60;

    cout << "老师姓名:" << t.name << "老师编号:" << t.id << "老师年龄:" << t.age
        <<"老师辅导的学生姓名:"<<t.stu.name<<"老师辅导的学生年龄:"
        <<t.stu.age<<"老师辅导的学生成绩"<<t.stu.scroe << endl;
    system("pause");
}

3、结构体做函数参数
作用:将结构体作为参数向函数中传递。
传递方式有两种:
1)、值传递;
2)、地址传递;
示例:

#include <iostream>
using namespace std;

/// <summary>
/// 定义学生结构体
/// </summary>
/// <returns></returns>
struct  student
{
    string name;
    int age;
    int score;
};
/// <summary>
/// 打印学生信息函数 值传递
/// </summary>
/// <param name="s"></param>

void printStudent(struct  student s)
{
    cout << "子函数中 姓名:" << s.name << "年龄:" << s.age << "分数:" <<
        s.score << endl;
}

/// <summary>
/// 地址传递
/// </summary>
/// <param name="p"></param>

void printStudentDring(struct student *p)
{
    cout << "子函数中 姓名:" << p->name << "年龄:" << p->age << "分数:" <<
        p->score << endl;
}

int main()
{
    //结构体做函数参数
    //将学生传入到一个参数中,打印学生身上的所有信息

    //创建结构体变量
    struct student s;
    s.name = "张三";
    s.age = 19;
    s.score = 99;

    printStudent(s);
    printStudentDring(&s);

    system("pause");
}
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用C++中的结构体指针作为结构体参数时,可以通过传递指针来直接操作和修改结构体的内容,而不是传递结构体的副本。这样可以节省内存空间并提高程序的效率。 下面是一个示例,演示了如何使用结构体指针作为结构体参数: ```cpp #include <iostream> struct Person { std::string name; int age; }; void updatePersonInfo(Person* person) { person->name = "Alice"; // 修改结构体成员 person->age = 25; } int main() { Person p; p.name = "Bob"; p.age = 30; std::cout << "Before update: " << p.name << ", " << p.age << std::endl; updatePersonInfo(&p); // 传递结构体指针 std::cout << "After update: " << p.name << ", " << p.age << std::endl; return 0; } ``` 在上面的示例中,我们定义了一个名为Person的结构体,包含了姓名和年龄两个成员变量。然后我们定义了一个updatePersonInfo函数,该函数接受一个Person类型的指针作为参数,并通过指针来修改结构体的成员变量。 在主函数中,我们创建了一个Person类型的变量p,并初始化了其成员变量。然后我们调用updatePersonInfo函数,将p的地址作为参数传递给它。在函数内部,我们通过指针修改了p的成员变量。 最后,我们输出修改后的结果,可以看到结构体的成员变量已经被成功更新。 通过使用结构体指针作为参数,我们可以直接修改结构体的内容,而不需要创建副本或者返回新的结构体对象。这种方式在处理大型结构体或需要频繁修改结构体内容的情况下非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值