影响

2010-01-14 58 views

回答

1

从语义上来说,没有一个是&的观点。

+2

无论从语法的角度来看。 – avakar 2010-01-14 15:35:52

9

就C编译器而言,没有区别。

1

你的意思是char(* getInput)(); 如果没有括号,你会有一个返回指向字符的指针的函数。使用括号getInput是指向返回char的函数的指针。

2

空间的位置。

+0

好回答=) – 2010-01-14 16:08:42

2

没有差别。请注意,以下所有声明都是一样的:

  • char*getInput();
  • char* getInput();
  • char *getInput();
  • char * getInput();
  • char* getInput();
  • char *getInput();
  • char * getInput();
  • char* getInput ();
  • char *getInput ();
  • char * getInput ();
  • char* getInput () ;
  • char *getInput () ;
  • char * getInput () ;

所有这些让编译器知道有一个叫getInput函数返回一个char *,并得到通过特定的,但没有说明,具体的参数数量,但是未指定,类型。


编辑

空格字符在源文件通常会被忽略,冗余。

for (n = 0; n < 1000; n++) { /* ... */ } 
for(n=0;n<1000;n++){/*...*/} 

它只在字符串内部以及当需要分隔不能用其他方式分隔的标记时才起作用。

return 9; /* statement that returns from a function */ 
return9; /* statement that evaluates a variable */ 
1

就意义而言根本没有差别。实际上,甚至在语法方面都没有。只要空白是某处,没有问题。两者都编译为完全相同的代码。

它通常是一个偏好问题,它被使用。传统的C编码器通常更喜欢第二种编码器,因为它更像是指示类型仍然是char,而不管它是否是指针。正如我相信Bjarne Stroustrup自己指出的,许多C++编码人员更喜欢char*语法,因为它在OOP风格中被认为更多。我个人也喜欢这个,因为它表示这个变量是一个字符指针

编辑:找不到他实际写的地方,但你可以很清楚地看到他的BC++ Style and Technique FAQ指南中他更喜欢char*风格的语法。

+0

但是当你声明一个char数组时,你不会写'char [N] a;',是吗?变量的“指针”是声明的一部分:“*”可以被写为看起来好像它是类型说明符的一部分,但它不能准确地反映声明语法。 – 2010-01-15 02:15:45

7

没有区别。

int* a; 
int *b; 
int * c; 

a,b或c之间没有不同。他们都是指针。只要你愿意,你可以放置尽可能多的空间。

然而,这些之间的差异:

int* a, a1, a2; 
int *b, b1, b2; 
int *c, *c1, *c2; 

只lnie C具有你宣布3个指针到整数。 A和B都有一个poitner-int和两个整数。

1

对编译器来说,没有区别。

在我的大脑中,第一种形式是首选,因为它表明函数更清晰地返回指向char(而不是char)的指针。当然,这是严格的恕我直言。

0

我知道我在回答什么都曾经说过......只想补充一些更多的东西:

什么ü可能要问可能是: 字符* getInput(); char(* getInput)();

在这里,第一个代表:getInput是一个函数,它返回指向char的指针。 秒是:getInput是一个指向返回字符的函数的指针。

在复杂的声明的情况下永远记得!从内部开始阅读

请考虑这一点:char *(* getInput)(); 这里,getInput是一个指向函数的指针,它返回一个指向char的指针。