博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++定义指针数组
阅读量:6789 次
发布时间:2019-06-26

本文共 947 字,大约阅读时间需要 3 分钟。

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分配的空间则不一定连续。
由此可见,相比于比二维字符 , 数组有明显的优点:一是指针数组中每个元素所指的字符串不必限制在相同的字符长度;二是访问指针数组中的一个元素是用指针间接进行的,效率比下标方式要高。 但是二维字符 却可以通过下标很方便的修改某一元素的值,而 数组却无法这么做。
 

转载于:https://www.cnblogs.com/warmfrog/p/3695173.html

你可能感兴趣的文章
jdk1.8.0环境变量设置
查看>>
《会说话的代码》英文能力的提升
查看>>
HDOJ_ACM_命运
查看>>
SpringMVC-拦截器
查看>>
MVC5+EF6 简易版CMS(非接口) 第一章:新建项目
查看>>
弹出窗口2window.open()---2011-11-11 09:47 window.open 打开窗口最大化
查看>>
水平居中
查看>>
2016年微软机试题第一题——FontSize
查看>>
matlab函数_连通区域
查看>>
Django自定义过滤器中is_safe和need_autoescape两个参数的理解
查看>>
Poj(1797) Dijkstra对松弛条件的变形
查看>>
oracle pctfree和pctused详解
查看>>
linux常用命令
查看>>
[转贴]LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project
查看>>
(转)MySQL的JDBC驱动源码解析
查看>>
图片转换为视频
查看>>
javaWeb服务详解(含源代码,测试通过,注释) ——Dept实体类
查看>>
给ListView加HeaderView时遇到的问题
查看>>
String到底在内存中是如何存储的
查看>>
IMX6Q RTC驱动分析
查看>>