• 数组指针/指针数组的使用


    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    using namespace std;
    
    #define M 4
    #define N 5
    
    int main()
    {
        int m = 4, n = 5;
        char arr[4][5] = {
            {'A','B','C','D','E'},
            {'F','G','H','I','J'},
            {'K','L','M','N','O'},
            {'P','Q','R','S',''}
        };
    
        char (*a)[N];                                 // a:指针
        a = arr;
        printf("%d
    ", sizeof(a));                    // 4 ----> 计算指针空间
        printf("%d
    ", sizeof(a+1));                  // 4 ----> 计算指针空间
        printf("%d
    ", sizeof(*(a+1)));               // 5 ----> 计算数组空间
    
        printf("%s
    ", a+1);                          // FGHIJKLMNOPQRS
        printf("%s
    ", *(a+1) + 3);                   // IJKLMNOPQRS
        printf("%c
    ", *(*(a+1) + 3));                // I
    
        /*-------------------------------------------------------------------------
                             数 组 指 针 操 作 示 意 图
    
    
                                    *p        *p+3
                                    ||         ||
                                    /         /
                           p -----> A   B   C   D   E
    
    
                                  *(p+1)    *(p+1)+3
                                    ||         ||
                                    /         /
                         p+1 -----> F   G   H   I   J
    
                                    K   L   M   N   O
    
                                    P   Q   R   S   T
    
        --------------------------------------------------------------------------------------------------------------*/
    
    
    
        char * b[N];                                  // b:数组
        for(int i = 0; i < m; i++)
            b[i] = arr[i];
        printf("%d
    ", sizeof(b[0]));                 // 4  ----> 计算指针空间
        printf("%d
    ", sizeof(*(b[0])));              // 1  ----> 计算字符空间
    
        printf("%s
    ", b[1]);                         // FGHIJKLMNOPQRS
        printf("%s
    ", b[1] + 3);                     // IJKLMNOPQRS
        printf("%c
    ", *(b[1] + 3));                  // I
    
        /*-------------------------------------------------------------------------
                             指 针 数 组 操 作 示 意 图
    
    
                                   p[0]      p[0]+3
                                    ||         ||
                                    /         /
                                    A   B   C   D   E
    
    
                                   p[1]      p[1]+3
                                    ||         ||
                                    /         /
                                    F   G   H   I   J
    
                                    K   L   M   N   O
    
                                    P   Q   R   S   T
    
        --------------------------------------------------------------------------------------------------------------*/
    
    
    
        char arr2[6] = {'A', 'B', 'C', 'D', 'E', ''};
        char *c = arr2;
        printf("%s
    ", c);                            // ABCDE
        printf("%s
    ", c + 3);                        // DE
        printf("%c
    ", *c);                           // A
        printf("%c
    ", c[3]);                         // D
        printf("%c
    ", *(c+3));                       // D
    
        /*-------------------------------------------------------------------------
                             普 通 指 针 操 作 示 意 图
    
    
                                *c                   *(c+3)
                                ||                     ||
                                /                     /
                      (c)-----> A   B   C  (c+3)-----> D   E
    
        --------------------------------------------------------------------------------------------------------------*/
        return 0;
    }
  • 相关阅读:
    mysql 大数据量求平均值
    mysql 大数据量求平均值
    dhcpd.conf(5)
    dhcpd.conf(5)
    学习记录(文章内容来自相关材料)
    分享一个ASP.NET 文件压缩解压类 C#
    服务降级
    distinct用法
    trim合理和谐
    小娱乐一下,fileInfo中的Name ,FullName的用法小BUG
  • 原文地址:https://www.cnblogs.com/1203ljh/p/4733220.html
Copyright © 2020-2023  润新知