我正在阅读K&R第二版的第5章。
在第87页,指向字符数组的指针被介绍为:
char *pmessage;
pmessage = "Now is the time";
如何知道pmessage
是指向字符数组的指针,而不是指向单个字符的指针?
更具体地说,在第94页定义了以下函数:
/* month_name: return the name of the n-th month */
char *month_name(int n)
{
static char *name[] = {
"Illegal month",
"January", "February", "March",
...
};
return (n < 1 || n > 12) ? name[0] : name[n];
}
如果您只收到上述函数的声明,如何知道返回的是单个字符还是字符数组?
如果假设从
month_name()
返回的是字符数组,并迭代直到遇到NULL
,但实际上返回的是单个字符,那么就有可能出现分段错误吗?请有人演示指向单个字符与字符数组的声明和赋值、它们在函数中的使用以及如何确定返回了哪一个。
pmessage
是指向字符数组的指针,而不是指向单个字符的指针?这是不确定的。但是,人们知道使用的函数。如果一个人不知道使用的函数返回什么,那么他如何能够期望创建一个正常工作的程序呢? - Shahbaz