• 数组和指针


    一、对于一维数组,指针和数组的行为是很像的。

    #include <iostream>
    
    void TestOneDim()
    {
        int a[] = {1,2,3,4,5};
        char b[] = "abcdef";
        int* ap = a;
        char* bp = b;
    
        std::cout << "ap : " << ap << std::endl;
        std::cout << "a : " << a << std::endl;
        std::cout << "bp : " << bp << std::endl;
        std::cout << "b : " << b << std::endl;
    
        std::cout << "ap[0] : " << ap[0] << std::endl;
        std::cout << "a[0] : " << a[0] << std::endl;
        std::cout << "bp[0] : " << bp[0] << std::endl;
        std::cout << "b[0] : " << b[0] << std::endl;
    }
    
    int main()
    {
        TestOneDim();
    }

    其输出结果为:

    ap : 002EF718
    a : 002EF718
    bp : abcdef
    b : abcdef
    ap[0] : 1
    a[0] : 1
    bp[0] : a
    b[0] : a

     从结果看,一维数组(a、b)和指针(ap、bp)的行为是一致的。

    二、对于二维数组,情况和一维数组有些不一样,比如二维数组不能直接赋给指针的指针;如果想用指针指向二维数组,需将数组赋给一个指向数组的指针,同时,如果想把二维数组赋给指针的指针,可以将二维数组赋给一个指针数组,再把指针数组赋给指针的指针就可以了。代码如下: 

    #include <iostream>
    
    void TestTwoDim();
    
    int main()
    {
        TestTwoDim();
    }
    
    void TestTwoDim()
    {
        int a[][3] = {1,2,3,4,5};
        int* b[] = {a[0], a[1]};
        int(* ap)[3] = a;
        int** bp = b;
        
        std::cout << "ap : " << ap << std::endl;
        std::cout << "ap[0] : " << ap[0] << std::endl;
        std::cout << "ap[0][0] : " << ap[0][0] << std::endl;
        std::cout << "----------------" << std::endl;

       std::cout << "bp : " << bp << std::endl;
       std::cout << "bp[0] : " << bp[0] << std::endl;
       std::cout << "bp[0][0] : " << bp[0][0] << std::endl;
       std::cout << "----------------" << std::endl;

    
    

       std::cout << "a : " << a << std::endl;
       std::cout << "a[0] : " << a[0] << std::endl;
       std::cout << "a[0][0] : " << a[0][0] << std::endl;

     }

    输出结果为:

    ap : 0042FA1C
    ap[0] : 0042FA1C
    ap[0][0] : 1
    ----------------
    bp : 0042FA0C
    bp[0] : 0042FA1C
    bp[0][0] : 1
    ----------------
    a : 0042FA1C
    a[0] : 0042FA1C
    a[0][0] : 1

    从结果看,指向数组的指针(ap)和二维数组(a)的行为是一致的,指针的指针(bp)和二维数组(a)的行为不完全一致,不过在取值上已经是一样了。

  • 相关阅读:
    IOS上传图片方向问题
    在线抠图的小工具
    Notion笔记工具免费开通教育许可
    多国正在遭遇新型勒索病毒Petya侵袭
    UC 网盘:我又回来了
    数字统计
    Hello,World!
    Unity开发笔记-Timeline利用Clip实现Rewind回放
    Unity开发笔记-Timeline利用Single实现Rewind回放
    Unity开发笔记-PSD自动导出UGUI工具开发要点记录(1)PSD树形结构解析
  • 原文地址:https://www.cnblogs.com/thinkers-dym/p/4179369.html
Copyright © 2020-2023  润新知