如果要定义或声明变量,请指定变量的类型,后跟变量名。因此,如果您想要一个类型的变量,wordlist
您将使用:
wordlist myVariable;
如果要将变量指定为指向变量类型的指针,请在变量名称前加上星号,因此,如果您想要一个指向类型变量的指针的变量,则wordlist
可以使用:
wordlist *myVariable;
大多数有经验的 C 程序员将星号与变量名放在一起的原因如下:
wordlist myVariable, *pVariable1, myVariable2, *pVariable2;
以上将创建四个变量。 myVariable
是类型wordlist
。myVariable2
是类型wordlist
。 pVariable1
并且pVariable2
是指向 的类型指针wordlist
。
因此,星号作为变量名声明的一种形容词或限定词或修饰符,表明该变量不是指定的类型,而是指向指定类型的指针。
组合变量定义与以下四行定义相同。
wordlist myVariable; // declares a variable of type wordlist
wordlist *pVariable1; // declares a pointer to a variable of type wordlist
wordlist myVariable2; // declares a variable of type wordlist
wordlist *pVariable2; // declares a pointer to a variable of type wordlist
函数定义/声明的工作方式类似。
wordlist *myFunc (void) {
wordlist *myNew = malloc (sizeof(wordlist));
if (myNew) {
// set up myNew stuff
}
return myNew;
}
编辑:函数指针
您还可以指定一个包含函数指针的变量。例如,对于上面的 myFunc(),您可以指定如下内容。请注意,我使用括号来强制执行特定的评估顺序。这说明 pFunc 是一个指向不接受参数的函数的指针(void 参数列表),它返回一个指向 wordlist 变量的指针。C 中有关于运算符和修饰符优先级的规则,但是随着表达式变得越来越复杂,通常最好使用括号强制执行评估顺序。将程序视为数据:函数指针
wordlist *((*pFunc) (void)) = myFunc; // pointer to a function that returns a pointer to a wordlist