一、了解问题
众所周知,C 语言没有单独的字符串类型。我们要存储一个字符串,也必须要将它们分为一个个字符放入数组中,这个数组中的每个元素也只是一个个字符而非字符串。
char arr[10] = "abcd";
//['a','b','c','d','\0']
而想要创建一个每个元素都为字符串的数组,我们必须有一个能表示字符串的类型。这恰好也是这个问题的核心,c语言标准没有给我们一个类似int、char、double一样的现成的类型。所有我们必须人为创建一个类型出来。
二、分析问题
那我们到底如何创建一个字符串的类型呢?
我在一次学习数组时看到了这个:
对一个数组例如
int arr[10] = {0};
这个数组的每个元素类型为int,而整个数组它的类型可以用int [10]表示,这让我反应过来“我们要存储一个字符串,必须要将它们分为一个个字符放入数组中”可否理解为我们可以让一个字符数组作为一个字符串的类型。例如用char [10]表示一个长度最大为10的字符串类型。
三、测试
第一次测试我写了如下这行代码:
char[10] arr[] = {"abc","def","ghi"};
但遗憾的是编辑器显示了红色的波浪线,语法错了。于是我就思考哪里出了问题,忽然我想到了数组指针的创建:
char(*p)[10] = NULL;
它的变量名是写在中间的。
于是,我更改为:
char(arr[])[10] ={"abc","def","ghi"};
没有报错。
四、使用与监视窗口查看
于是我将其写成完整的程序,看看它的使用情况。
为更准确判断我打开监视窗口查看。
这充分说明了这个数组的每个元素确实都是字符串。同时也暗示了这本质上是一个二维数组。
五、个人总结
“如何创建一个数组使每个元素为字符串?”这只是我灵光一闪的想法,并没想过这是否有作用,也没查过是否有先例和讲解,这些对我来说并不重要,因为对逻辑的探索与思考往往比了解一个知识更具价值和意义。
在此希望大家在对待一个问题(不管是编程上的还是生活上的)时,不要只盯着解决方法,对待问题的思路与逻辑更加重要,哪怕问题最终没有解决,若实力更精进也是一种胜利。
如果本篇博客对你有帮助,就点个关注和赞吧!