C语言的字符串
何为字符串,就是将字符串起来,哈哈,跟羊肉串一样。
这次说说早就应该介绍的字符串,其实字符串主要坑比较多,刚开始用还没啥,越用越心虚。
那咱们就从不心虚的地方说起吧。
来个官方定义:
字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。
所以一个以 null 结尾的字符串,包含了组成该字符串的字符。
是个什么意思呢,来看个实例了解下。
比如我们声明和初始化创建了一个 “Hello” 字符串。
1 | char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; |
这里就有疑问了,本着勤俭节约的精神,吃饭不要铺张浪费,吃饱吃好就行,不耍排场。
这里也应该这样呀,你的Hello只有5个字符,为什么要用6个字符数组???
这是字符串的第一个坑,建议的解决方法是尽可能比你需要的大一些字符,在目前内存与房价齐飞的阶段,不多你几个字符,原因如下:
由于在数组的末尾存储了空字符,所以字符数组的大小比单词 “Hello” 的字符数多一个。
还有一个疑问就是,这样写字符串也太-太-太啰嗦了吧,是的,所以另外一种的使用方法为:
1 | char greeting[] = "Hello"; |
整齐划一有内涵。
这两个值倒是在内存里面如何存储呢,我们来个表格看看:
下标 | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
变量 | H | e | l | l | o | \0 |
看到没有,最后一位就是null,即\0
。
看个简单的代码:
1 | /*beginner/string/string1.c*/ |
编译运行
直接输入make
就可以了。
1 | #beginner/string/Makefile |
运行输出如下:
1 | $ ./string1 |