Linux C语言学习 二级指针 结构体

e9aa5bb4d45a473689be5f5599cda629.png

1.二级指针:
    1.函数体内修改函数体外指针变量的值
    2.指针数组的数组名是指向数组第一个元素的指针即二级指针

    C语言中:
    指针数组传参二级指针和长度 
    二维数组传参数组指针和长度

    char str[5][32];
    int fun(char (*p)[32], int len);

    char *pstr[5];
    int fun(char **ppstr, int len);

2.函数指针和指针函数:
    指针函数是函数,函数的返回值是指针 
    int *fun(int x, int y);

    函数指针是指针,指针指向一个函数 
    int (*p)(int, int);

3.指针函数:
    返回值为指针的函数
    注意:
        1.指针函数不能返回局部变量的地址

局部变量作用域的限制在运行完函数后空间被回收。

4.void *指针 
    void 缺省类型 
    void *只表示类型地址,没有指向空间大小的含义
    主要用户函数传参和返回值使用

    void a;                 //错
    void *p = 0x2000;       //对 
    
    char *p = 0x2000;
    double *p = 0x2000;
    int *p = 0x2000;

    注意:   
        1.char *、int *、double * 转换为void *时需要强制类型转换
        2.void *转换为char *、int *、double *时不需要强制类型转换

5.函数指针: 
    函数指针是指针,占8个字节空间,指向函数 

f84152a8596a4f33adaae9fe99b419c1.png

构造数据类型:
1.数据类型

    1.基本数据类型: short int long float double 
    2.构造数据类型: 结构体、共用体(联合体)、枚举 

2.结构体: 
    1.结构体类型的定义:
        struct 结构体名 
        {
            数据类型1 成员变量1;
            数据类型2 成员变量2;
            数据类型3 成员变量3;
            ...
        };

3dc7798fb3264491b5bbffa37130a640.png

    2.结构体变量的定义:
        数据类型 变量名;    

    3.结构体变量的初始化:
        1.全部初始化:
            struct student s = {"zhangsan", 'm', 19, 100};
        2.局部初始化:
            struct student s = {
                .name = "zhangsan",
                .score = 100,
            };

ed7b7d669c01488598d6bcbc78fb2cac.png

    4.结构体成员的访问:
        .  :结构体变量类型访问成员变量
        -> :结构体指针类型访问成员变量 

        结构体访问成员变量最终的类型由成员变量的类型决定

93e6f33b1bf14dc48596ddda380d63bf.png

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值