• C语言:指针的应用


    指针:

       常量:在程序运行过程中值不能发生改变

       变量:在程序运行过程中值可以发生改变

       计算机内存中最小的存储单位是字节,每个字节都有一个编号这个编号就是地址

       指针变量:存储地址的变量

      

       一般形式:

       <数据类型> *<指针变量名>

       NULL: 空指针

      

    指针和变量的关系:

       int a = 10, b = 20;

       int *p = &a;

       printf("a:%d *p:%d\n", a, *p);

       a = 30;

       printf("a:%d *p:%d\n", a, *p);

       *p = 40;

       printf("a:%d *p:%d\n", a, *p);

      

    多级指针:(定义时有多个*) 解引用

        二级指针:

         指针的指针(指向一级指针的指针变量)

         int a = 10, b = 20;

         int *p;

         p = &a;

         int **q = &p;

         printf("a: %d %d %d\n", a, *p, **q);

         //p = &b;

         *q = &b; // p = &b

         q == &p    *q == p      **q == *p == b

        

    指针与一维数组:

       在C语言中一维数组的数组名就是该数组在内存中的起始地址也是首元素的地址

       char a[10] = {"hello"};

       char *p = a;

       printf("a[3]: %d %d %d %d\n", a[3], *(p+3), p[3], *(a+3));

      

       *和&互为逆运算: 同时存在可以相互抵消

       *和[]等价     :  可以相互转换

       &和[]互为逆运算:同时存在可以相互抵消

      

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

    scanf("%d", &m);

    加入m==3

    a: 2,3,4,1

    冒泡排序:

         int a[N] = {.....}, t;

         for(int i = 0; i < N-1; i++){

            for(int j = 0; j < N-i-1; j++){

               if(a[j] > a[j+1]){

                 t = a[j];

                 a[j] = a[j+1];

                 a[j+1] = t;

               }

            }

         }

  • 相关阅读:
    SpringBoot中bean的生命周期
    FPGA生成图像Modelsim仿真生成BMP图片保存显示
    LabVIEW创建类 2
    Windows10中使用VS2022和Cmake编译构建C++开源日志库-spdlog
    React之Redux详解
    Tensorflow笔记(二)
    末日电涌 Rogue Voltage 中文免安装版,解压即可玩
    java毕业设计衣依服装销售平台Mybatis+系统+数据库+调试部署
    聊聊logback的ThresholdFilter
    数据结构篇其二---单链表(C语言+超万字解析)
  • 原文地址:https://blog.csdn.net/qq_63626307/article/details/126325739