这个问题 与上一篇文章是相关联的。
也许,以下讨论的都不是解决上一篇文章问题 所需,但是这个问题困扰了,我想先解决了。
我先说一下我考虑这个问题的 最初原因:
比如说,要存储多个字符串,如果字符串大小和数目都知道,那是一件很容易的事情
比如说,大小为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]);
输出当然是没意义的。
因为我把地址绑定了,自然输出的就是我最后一个输入的字符串。
数组和指针最大的差别是 数组是定死的(长度),而 指针呢,是不定的。
有人曾经这么说,指针可以认为是 动态数组。
所以,我就很希望,能出现一个 数组指针,是 数组的指针,用(字符)数组存储字符串,用指针动态存储,这样可以使其字符串数组动态变化
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
现在让我来总结一下这个问题:
指针数组
它当然是一个 数组,跟所有数组都是类似的。
只不过它的元素是 指针。
按照我上面的目的来说,就是,我可以用它们存取一系列字符串(字符数组),假如有必要。
数值指针
这当然是一个 指针,那它存储的是什么捏?
当然是数组,,一个用来存储数组(地址)的指针......我承认这是一个很奇怪的概念。
为了理解它,我试图用普通 指针(也就是普通变量的指针)去类比一下。
首先,普通指针存储的当然是一系列的地址,它们装着变量。
那么,数组指针 存储的自然也是一系列地址,它们装载着数组(首地址)
假如说,我们现在有一系列数组,它们都是一个一个的字符数组(字符串),那,它们存储的就应该是每个字符串首个字符的地址,这样的话,我忽然觉得这跟定义一个二维数组,然后引用第一维,就等同于引用了这个 数组指针 中的每一个 地址值。
于是我终于貌似解决了这个问题,这是个 有点问题的问题。