这些形式的指针声明有什么区别?

时间:2012-12-20 09:05:41

标签: c pointers declaration

  

可能重复:
  C - initialization of pointers, asterisk position

这些声明之间有什么区别:

char* str; 

char *str; 

有没有区别?

另一个例子:

   char* str; 
   struct StrStackLink *next; 

strnext指针是否都是明星的位置有什么意义?

7 个答案:

答案 0 :(得分:3)

没有区别 - 都声明了一个指向char的指针。在同一行声明多个变量时会有区别

char* str1, str2;

声明str1是指针而str2是char,而

char *str1, *str2;

声明两个char指针

答案 1 :(得分:2)

您编写的所有char指针声明都是等效的。 明星的位置确实会改变任何事情。

可能令人困惑的情况是以下声明

char* a, b;

在这里,您声明了一个指向char的指针,以及一个指向char的指针。所以为了清楚起见,我建议用变量名折叠星号。

char *a, b;

答案 2 :(得分:1)

不,没有任何区别。只是个人偏好的问题。

答案 3 :(得分:1)

两者之间没有任何区别。

答案 4 :(得分:1)

不,没有区别,但符号char *str更好,因为您知道str是指针。

例如,声明char *str1,str2表示str1是指针,但str2是char。声明char* str1,str2意味着同样的事情,但令人困惑。

答案 5 :(得分:0)

没有区别。

你有什么证据可以让你这么想吗?

您也可以这样声明:

char * p;

答案 6 :(得分:0)

根本没有区别

char *strchar* str都相同,甚至

char * str;也是一样。

空格不会影响这一点,*总是带有标识符名称。

是的,对于第二个问题,nextstr都是指针。

在下面的情况中,

char *str,s;此处strpointer,而s仅为char。 如果你想在每个标识符之前将指针放在*之前。

或者,这里是typedef的使用,在这种情况下,当你需要多个相同类型的指针时,你应该考虑使用它。

typedef char* pchar;

pchar str, s; // both str and s are pointers