[经过多年对Linux的沉迷,并对底层计算机设计和编程非常感兴趣(但是没有空余时间),我终于开始了学习C的旅程。我正在通过B Kernighan和D Ritchie的C编程语言进行工作(v2)书,以及通过exercism.io的C语言学习。
两者的首要任务都是典型的Hello World程序。在K&R中,任务集是使用stdio.h
库到print
#include <stddef.h>
const char *hello(void) {
return "Hello, World!";
}
基于到目前为止我在C上阅读的所有内容,返回字符串并不是真正的标准,但是也可以。经过一番大惊小怪和一个分段错误(核心已转储)(我试图返回该函数本身:return hello();
,没有bueno),我通过了测试。
我了解到*
字符是pointer operator
char
的上标。 This链接特别显示了用于放置指针运算符的三个可行选项,并指出它们都是等效的。当我开始写这个问题时,我认为将指针运算符附加到函数名称上最有意义-那是字符数组在内存中的位置,对吗?进一步思考,应该将指针运算符附加到数据声明char
,因为实际上它是函数的输出
我的问题:指针操作符的三个放置选项之间是否有区别?
如果是,它们是什么?如果没有,什么是最佳做法?经过多年对Linux的沉迷,并对底层计算机设计和编程非常感兴趣(但没有空闲时间),我终于开始了学习C的旅程。我正在工作...
const char* myName()
const char * myName()
const char *myName()