• C语言指针速成下篇


    c语言的指针下篇终于迎来了收尾,那么废话不多说,我们直接进入正题

     指针访问数组

    # include
    int main ()
    {
    int arr[ 10 ] = { 0 };
    // 输⼊
    int i = 0 ;
    int sz = sizeof (arr)/ sizeof (arr[ 0 ]);
    // 输⼊
    int * p = arr  //这一步往下都是指针访问数组
    for (i= 0 ; i
    {
    scanf ( "%d" , p+i);
    //scanf("%d", arr+i);// 也可以这样写
    }
    // 输出
    for (i= 0 ; i
    {
    printf ( "%d " , p[i]);
    }
    return 0 ;
    }
    语法格式:类型* 指针变量名  =  数组名

    函数传参方面

    函数的形参(数组)格式:

    1.int   数组名[ ] 

    2.int*   指针变量

    二级指针的底层逻辑

    一级指针:

    int*  p  =  &a;

    二级指针:

    在一级指针的基础上,将一级指针的地址,再次存放进指针变量中。

    格式:int* pp = p   或  int** pp = p 或int**pp = *p

    那么我们来看道题:

    可能刚学习到指针的小伙伴会疑惑,什么是节点呀?这不是在为难我吗。既然不知道节点是什么没关系,但是实参和形参是什么,小伙伴们应该都知道吧,指针刚好又是这节课学的,所以嘛,我们还是可以试试的。

    首先我们先讲一下实参这边:  &plist是这个这个变量名(节点)的地址,因为有个&符号,也就是我们上面写的int*  p  =  &a;

    那么我们再来看看pilst以及它对应的*pphead如何理解 

    首先我们根据之前学的一级指针基础可以发现:2 、3两个是可以互逆的,也就是说&plist的地址给了形参pphead,并且pphead给它“封装”了起来,然后当pphead需要通过地址找到这个变量时,给自己的前面加个星号,以此打开之前自己“封装”好的地址”包裹“,然后根据地址找到之前的变量,看到这里的小伙伴应该已经知道这操作的名字了,没错这就是解引用

    那么前两层理解了后最后一层就容易理解了

    实参这列的最后一个*plist它是一个一级指针,因此形参这边需要用二级指针来保存实参

    看到这里的小伙伴如果还不理解,可以再思考一遍,或者在评论区留言。

    那么最后给大家简单介绍一个排序函数

    qsort函数

    作用:进行数据排序

    使用前提条件:排序的数据必须是整型数据

    qsort函数的使用模板: 

    int compare(const void* a, const void* b)

    {
        return(*(int*)a - *(int*)b);

    }

    qsort(数组名,数组长度,类型字节,compare);

    今天的指针篇到此就完结了,大家看完后,可以做一下笔记。

  • 相关阅读:
    《痞子衡嵌入式半月刊》 第 84 期
    webpack【实用教程】
    ARM编译Qt程序报错pinyin.cpp:1: error: stray ‘\357‘ in program
    编程-设计模式 11:享元模式
    【入门Flink】- 05Flink运行时架构以及一些核心概念
    基于最新导则下生态环评报告编制技术暨报告篇、制图篇、指数篇、综合应用篇系统性实践技能提升
    Html5+CSS3:第一讲:H5基础
    【RHCE-第五天作业】
    [NSSCTF 2nd]Math
    Java 17 VS Java 8: 新旧对决,这些Java 17新特性你不容错过
  • 原文地址:https://blog.csdn.net/2302_80418176/article/details/140024040