• 第26课 指针的本质分析


    程序中的变量只是一段存储空间的别名,那么是不是必须通过这个别名才能使用这段存储空间?

    下面的程序输出什么?

    运行结果如下:

    i的值发生了改变,但是在程序中,我们没有直接修改i的值,这就是因为指针的操作,通过指针我们改变了i的值。

    *号的意义

    小贴士:

    指针的使用示例:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int i = 0;
     6     int* pI;
     7     char* pC;
     8     float* pF;
     9     
    10     pI = &i;
    11     
    12     *pI = 10;
    13     
    14     printf("%p, %p, %d
    ", pI, &i, i);
    15     printf("%d, %d, %p
    ", sizeof(int*), sizeof(pI), &pI);
    16     printf("%d, %d, %p
    ", sizeof(char*), sizeof(pC), &pC);
    17     printf("%d, %d, %p
    ", sizeof(float*), sizeof(pF), &pF);
    18     
    19     return 0;
    20 }

    运行结果如下:

    传值调用与传址调用:

    利用指针交换变量:

     1 #include <stdio.h>
     2 
     3 int swap(int* a, int* b)
     4 {
     5     int c = *a;
     6     
     7     *a = *b;
     8     
     9     *b = c;
    10 }
    11 
    12 int main()
    13 {
    14     int aa = 1;
    15     int bb = 2;
    16     
    17     printf("aa = %d, bb = %d
    ", aa, bb);
    18     
    19     swap(&aa, &bb);
    20     
    21     printf("aa = %d, bb = %d
    ", aa, bb);
    22     
    23     return 0;
    24 }

    运行结果如下:

    常量与指针:

    程序示例:

    #include <stdio.h>
    
    int main()
    {
        int i = 0;
        
        const int* p1 = &i;
        int const* p2 = &i;
        int* const p3 = &i;
        const int* const p4 = &i;
        
        *p1 = 1;    // compile error
        p1 = NULL;  // ok
        
        *p2 = 2;    // compile error
        p2 = NULL;  // ok
        
        *p3 = 3;    // ok
        p3 = NULL;  // compile error
        
        *p4 = 4;    // compile error
        p4 = NULL;  // compile error
        
        return 0;
    }

    编译器报错结果如下:

    小结:

  • 相关阅读:
    Maven打包时去掉项目版本号
    maven编译的时候排除junit测试类
    Redis与Zookeeper实现分布式锁的区别
    分布式锁(基于redis和zookeeper)详解
    解读阿里巴巴集团的“大中台、小前台”组织战略
    java高并发系列
    JAVA之Unsafe学习笔记
    测试用例之正交排列法
    测试用例之因果图/判定表
    测试用例之边界值法
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9537938.html
Copyright © 2020-2023  润新知