zoukankan      html  css  js  c++  java
  • C++定义指针数组

    C语言或C++中,数组元素全为指针的数组称为指针数组

    一维指针数组的定义为:类型名*数组标识符[数组长度]

    eg: int*ptr_array[10];

    以下内容来自百度百科

    链接

    http://baike.baidu.com/link?url=r6JRJbaleIw_69o-t8uO2vTF0r4oukf1bMMpp0sp9caXDbprF9LNZXwfsf4QovUKWloO2r6CJiNFNPNvP5aRS_

    与数组指针关系

    数组指针是指向数组首元素的地址的指针,其本质为指针(这个指针存放的是数组首地址的地址,相当于2级指针,这个指针不可移动); 指针数组是数组元素为指针的数组,其本质为数组。
    例如:*p[2]是指针数组,实质是一个数组,里面的两个元素都是指针 []的优先级比*的优先级高,p先与[]结合,形成数组p[2],有两个元素的数组,再与*结合,表示此数组是指针类型的,每个数组元素相当于一个指针变量
     
     

    与二维数组对比

    二维数组:如char string_1[10][10]只要定义了一个二维数组,无论赋不赋值,系统都会给他分配相应空间,而且该空间一定是连续的。其每个元素表示一个字符。我们可以通过制定下标对其元素进行修改。
    指针数组:如char *str_B[5] 系统至少会分配5个连续的空间用来存储5个元素,表示str_B是一个5个元素的数组,每个元素是一个指向字符型数据的一个指针。
    如果我做这样的定义:
    char a[3][8]={"gain","much","strong"};
    char *n[3]={"gain","much","strong"};
    他们在内存的存储方式分别如右图所示,可见,系统给数组a分配了
    3×8的空间,而给n分配的空间则取决于具体字符串的长度。
    此外,系统分配给a的空间是连续的,而给n分配的空间则不一定连续。
    由此可见,相比于比二维字符数组指针数组有明显的优点:一是指针数组中每个元素所指的字符串不必限制在相同的字符长度;二是访问指针数组中的一个元素是用指针间接进行的,效率比下标方式要高。 但是二维字符数组却可以通过下标很方便的修改某一元素的值,而指针数组却无法这么做。
     
  • 相关阅读:
    静态代理模式
    反射+抽象工厂
    抽象工厂模式
    工厂方法模式
    简单工厂模式
    单例模式
    博客总览
    Bootstrap快速上手 --作品展示站点
    Java 网络编程---分布式文件协同编辑器设计与实现
    如何在博客园的博客中添加可运行的JS(转载)
  • 原文地址:https://www.cnblogs.com/warmfrog/p/3695173.html
Copyright © 2011-2022 走看看