首页 > 编程语言 > 详细

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

时间:2015-08-15 22:53:47      阅读:338      评论:0      收藏:0      [点我收藏+]

 

#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,\0}
    };

    char (*a)[N];                                 // a:指针
    a = arr;
    printf("%d\n", sizeof(a));                    // 4 ----> 计算指针空间
    printf("%d\n", sizeof(a[0]));                 // 5 ----> 计算数组空间
    printf("%s\n", a[1]);                         // FGHIJKLMNOPQRS
    printf("%s\n", a[1] + 3);                     // IJKLMNOPQRS
    printf("%c\n", *(a[1]) + 3);                  // I

    /*-------------------------------------------------------------------------
                         数 组 指 针 操 作 示 意 图


                             *(p[0])    *(p[0])+3
                                ||         ||
                                \/         \/
             p   或 p[0] -----> A   B   C   D  E


                             *(p[1])    *(p[1])+3
                                ||         ||
                                \/         \/
             p+1 或 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\n", sizeof(b));                    // 20 ----> 计算数组空间
    printf("%d\n", sizeof(b[0]));                 // 4  ----> 计算指针空间
    printf("%s\n", b[1]);                         // FGHIJKLMNOPQRS
    printf("%s\n", b[1] + 3);                     // IJKLMNOPQRS
    printf("%c\n", *(b[1]) + 3);                  // I

    /*-------------------------------------------------------------------------
                         指 针 数 组 操 作 示 意 图


                             *(p[0])    *(p[0])+3
                                ||         ||
                                \/         \/
                    p[0] -----> 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 arr2[6] = {A, B, C, D, E, \0};
    char *c = arr2;
    printf("%s\n", c);                            // ABCDE
    printf("%s\n", c + 3);                        // DE
    printf("%c\n", *c);                           // A
    printf("%c\n", c[3]);                         // D
    printf("%c\n", *(c+3));                       // D

    /*-------------------------------------------------------------------------
                         普 通 指 针 操 作 示 意 图


                            *c                   *(c+3)
                            ||                     ||
                            \/                     \/
                  (c)-----> A   B   C  (c+3)-----> D   E

    --------------------------------------------------------------------------------------------------------------*/
    return 0;
}

 

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

原文:http://www.cnblogs.com/1203ljh/p/4733220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!