嵌入式学习Day11

本文详细讲解了字符型数组的传参、字符串遍历、二级指针、void*指针的使用、const指针的不同形式,以及数组指针和指针数组的区别,帮助读者理解C语言中的基础指针概念。
摘要由CSDN通过智能技术生成

字符型数组和字符串的传参:
    char str[32] = {"hello world"};

    int fun(char *pstr);

字符串遍历:
        while (str[i] != '\0')
        {
            i++;
        }

        while (*p != '\0')
        {
            p++;
        }

二级指针

        指向一级指针变量的指针

void *指针

        用来保存地址

        void *p;                    //所有指针都是8个字节

        void * -> int *、char *、double * 不需要强制类型转换

        int *、char *、double * -> void * 需要强制类型转换

        void * 作为函数参数,可以传入char *、double *、int *的指针,实现一个函数原型下的不同类

                型指针的传参

const指针

const == readonly

            1.const int *p;
            2.int const *p;
            3.int *const p;
            4.const int *const p;
            5.int const *const p; 

            1和2是等价的
            const 修饰 *p, p可以改变, *p不能改变
            只能使用指针指向的空间数据,不能修改此数据

            3
            const 修饰 p, p不可以改变, *p可以改变,一定要初始化,否则该指针为野指针
            永远指向某个空间的指针(比如数组的数组名)

            4和5是等价的
            const 修饰p *p, p不可以改变, *p不可以改变,一定要初始化

数组指针和指针数组

        1.数组指针

                数组指针是指针,指向整个数组

                数组指针:对一维数组名&,值不变,类型升级为指向整个数组的数组指针

                对数组指针*,值不变,类型降级称为指向数组第一个元素的指针

                int a[5] = {1, 2, 3, 4, 5};

                a可以理解为int * 
             注意:
                在以下两种情况下a不能理解为int *型 
                1.sizeof操作
                2.&操作
                    &int *  ==   int ** 
                    &a      ==   int (*)[5]

        2.指针数组

                指针数组是数组,数组的每个元素都是指针

                int *a[5]:定义一个数组,数组名为a,有5个元素,每个元素为int*型

      注:存放字符串数组用二维数组
             操作字符串数组用指针数组

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值