指针数组 与 数组指针(假如有这个东西的话)

这个问题 与上一篇文章是相关联的。

 

也许,以下讨论的都不是解决上一篇文章问题 所需,但是这个问题困扰了,我想先解决了。

 

我先说一下我考虑这个问题的 最初原因:

 

 

比如说,要存储多个字符串,如果字符串大小和数目都知道,那是一件很容易的事情 

比如说,大小为16,数目为4

那就是一个 4×16的二维数组 

但我就是想,如果数目不一定呢?》 


于是乎,我想,如果我用一个 字符数组(就是一个字符串)

但是我希望有一个指针(然后我可以动态为其分配内存空间)

然后我就可以在这个 数组 指针 里 存储数目不定的 字符串

 

我回头阅读我学习C语言的 霍顿的 入门经典,翻了半天的书,我现在翻到了 指针数组的内容。

 

指针数组,意思应该是 一个数组,其存储的元素是 指针。

比如说,如下就定义了一个 指针数组:

 

char *pString[NUM] = { NULL };

 

但是对于这个东西,可以如何操作呢?、

 

我尝试了以下这些 没啥意义 的操作。

 

char string[LENGTH];

char i = 0;

 

for(i = 0;i < NUM;i++)

{

pString[i] = string;

printf("press a string ,finish by ENTER./n");

//gets(pString[i]);

 gets(string);

}

for(i = 0;i < NUM;i++)

printf("%s/n",pString[i]);

 

输出当然是没意义的。

因为我把地址绑定了,自然输出的就是我最后一个输入的字符串。

 

数组和指针最大的差别是 数组是定死的(长度),而 指针呢,是不定的。

有人曾经这么说,指针可以认为是 动态数组。

 

所以,我就很希望,能出现一个 数组指针,是 数组的指针,用(字符)数组存储字符串,用指针动态存储,这样可以使其字符串数组动态变化

 

 

//-------------------------------------------------------------------------

//-------------------------------------------------------------------------

现在让我来总结一下这个问题:


指针数组

它当然是一个 数组,跟所有数组都是类似的。

只不过它的元素是 指针。


按照我上面的目的来说,就是,我可以用它们存取一系列字符串(字符数组),假如有必要。


数值指针

这当然是一个 指针,那它存储的是什么捏?

当然是数组,,一个用来存储数组(地址)的指针......我承认这是一个很奇怪的概念。


为了理解它,我试图用普通 指针(也就是普通变量的指针)去类比一下。


首先,普通指针存储的当然是一系列的地址,它们装着变量。

那么,数组指针 存储的自然也是一系列地址,它们装载着数组(首地址)

假如说,我们现在有一系列数组,它们都是一个一个的字符数组(字符串),那,它们存储的就应该是每个字符串首个字符的地址,这样的话,我忽然觉得这跟定义一个二维数组,然后引用第一维,就等同于引用了这个 数组指针 中的每一个 地址值。


于是我终于貌似解决了这个问题,这是个 有点问题的问题。


 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值