栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构预备知识二(指针与结构体)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构预备知识二(指针与结构体)

数据结构预备知识二(指针与结构体) 一、指针知识补充
  • 不管指针变量指向的变量本身所占空间是多少,指针变量本身只占4个字节
  • 利用函数修改某个变量的值,只需将变量的地址发送给函数形参即可
#include 
#include 

//利用函数修改指针变量的值

void f(int **p);

int main()
{
    int i = 0 ;
    int *p = &i;

    printf("%pn", p);

    f(&p);

    printf("%pn", p);

    return 0;
}


//注意在实际操作中并不能这样改写,这样会造成程序错误
f(int **p){
    *p = (int *)0xFFFFFFFF;
}

二、结构体
  • 为什么会出现结构体?

为了表示一些复杂的数据,而普通的基本数据类型变量无法满足要求。

  • 什么叫结构体?

结构体是用户根据实际需要自己定义的复合数据类型。

  • 如何使用结构体?
struct Student st = {10000, "zahngsan", 18};
struct Student *pst = &st;

方式一:
    st.sid;
方式二:
    pst->sid;
三、结构体案例
#include
#include

//修改结构体变量函数声明
void modifyStruct(struct Student *pst);
//打印结构体变量函数声明
void printStruct(struct Student st);
void printStruct1(struct Student* pst1);

struct Student{
    int sid;
    char name[200];
    int age;
};

int main(void){
    //定义结构体变量,并对其进行初始化
    struct Student st = {10000, "zahngsan", 18};
    struct Student *pst = &st;

    struct Student st1;
    st1.sid = 10001;
    strcpy(st1.name, "lisi");
    st1.age = 18;

    printStruct1(pst);
    printStruct(st1);
    modifyStruct(pst);
    printStruct1(pst);

}

//定义方法对结构体变量进行修改
modifyStruct(struct Student *pst){
    pst->sid = 10002;
    strcpy(pst->name, "wangwu");
    pst->age = 20;
}

//定义方法,通过将结构体变量传递给形参对结构体变量打印,但实际应用过程中,并不会使用这种方法,它浪费时间和空间
printStruct(struct Student st){
    printf("sid = %d, name = %s, age = %dn", st.sid, st.name, st.age);
}

//定义方法,通过将结构体指针变量传递给形参对结构体变量打印
printStruct1(struct Student *pst1){
    printf("sid = %d, name = %s, age = %dn", pst1->sid, pst1->name, pst1->age);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968411.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号