指针的前世今生
上一篇内容我们讲了如何使用 C 指针, 总结起来一句话, 函数全加星, 调用取地址.
但是, 我们没有思考过, 为啥就一定要有指针呢?
先说结论: 连续单元的定值表示.
我们来解读这段话, "Hello World"
是一个很明显的连续单元, 我们取一个定制表示它.
#include <stdio.h>
int main() {
char greet = "Hello World";
printf("%s", greet);
return 0;
}
这样描述, 可能连编译都通过不了, 原因很简单, char
只能表示一个值, 你把他当一个数组用, 有没有什么办法用一个值来表示呢, char*
星号一般意义有 N 个, 这里也是这个意思, 我们用 char*
代替 char
发现他正常工作了.
#include <stdio.h>
int main() {
char * greet = "Hello World";
printf("%s", greet);
return 0;
}
不过这样写是极其不严谨的, 字符串的定义是: 以 char
连接连续单元, 用 \0
来表示结束. 所以我们再次优化代码.
#include <stdio.h>
int main() {
char * greet = "Hello World\0";
printf("%s", greet);
return 0;
}