学习嵌入式第十三天

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

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

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

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

2.指针函数:
    指针函数是函数,函数的返回值是指针 
    int *fun(int x, int y);
    注意:
        指针函数不能返回局部变量的地址

pstr是一个局部变量,函数体结束,局部变量会被回收,地址被返回,但其没有值,相当于返回了一个野指针。

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

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

使用函数指针p调用函数:先声明一个函数指针,将函数名赋值给函数指针(eg:p=Div;),从而使用函数指针调用函数。就是让p这个函数指针指向Div这个函数,p(num1,num2)是取p这个函数指针所指向的值,也就是函数本身。

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 *时不需要强制类型转换

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

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

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

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

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

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

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值