美文网首页程序员
指针与数组区别

指针与数组区别

作者: 平凡的鱼仔 | 来源:发表于2018-09-15 12:10 被阅读5次

    初始化对比

    //指针形式
    const char* head="I love cat!";
    //字符数组形式
    char heart[]="I love cat!";
    

    heart是一个地址常量,head是一个变量,二者都可以使用下标法,heart[0]->'I',head[0]->'I'
    初始化字符数组和初始化化指针在内存处理方面是不一样的:
    对于字符数组,等号(=)右边的"字符串"保存在静态内存中,在代码执行时,字符数组才被分配内存,即动态存储。初始化时,系统从静态内存区将字符串拷给字符数组。
    对于指针,等号(=)右边的"字符串"同样也是保存在静态内存中,初始化时只是将"字符串"的内存地址拷给了指针

    char fruit1[3][7]={"apple","pear","orange"};
    const char* fruit2[3]={"apple","pear","orange"};
    

    存储方式对比

    数组: 指针:
    'a', 'p' ,'p', 'l', 'e' ,'\0', '\0' 'a', 'p' ,'p', 'l', 'e' ,'\0'
    'p', 'e', 'a' ,'r', '\0', '\0' ,'\0' 'p', 'e', 'a' ,'r', '\0'
    'o' ,'r' ,'a' ,'n', 'g', 'e', '\0' 'o' ,'r' ,'a' ,'n', 'g', 'e', '\0'

    使用方法对比

    //指针形式
    #include "stdafx.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        const char* p="A pointer was initialized to me.";
        printf("%s\n",p);  //从第一个字符开始输出
        printf("%s\n",p+4);  //从第五个字符开始输出
        printf("%c\n",p[4]);    //输出第五个字符
        getchar();
        return 0;
    }
    

    运行结果:


    捕获.PNG
    //数组形式
    #include "stdafx.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        char str[50]="An array was initialized to me.";
        puts(str);    //str即&str[0],从第一个字符开始输出
        puts(&str[5]);  //从第六个字符开始输出
            printf("%c",str[5]);  //输出第六个字符
        getchar();
        return 0;
    }
    

    运行结果:


    捕获2.PNG

    相关文章

      网友评论

        本文标题:指针与数组区别

        本文链接:https://www.haomeiwen.com/subject/qfddgftx.html