-1

可能重复:
C - 指针初始化,星号位置

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

char* str; 

char *str; 

有什么区别吗?

另一个例子:

   char* str; 
   struct StrStackLink *next; 

str两者都是next指针还是星星的位置有什么意义?

4

7 回答 7

3

没有区别 - 两者都声明了一个指向 char 的指针。但是,在同一行上声明多个变量时会有所不同

char* str1, str2;

声明str1为指针和str2字符,而

char *str1, *str2;

声明两个 char 指针

于 2012-12-20T09:08:25.070 回答
2

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

可能会造成混淆的情况是以下声明

char* a, b;

在这里,您声明 a,指向 的指针char和 b,a char。因此,为了清楚起见,我建议用变量名折叠星号。

char *a, b;
于 2012-12-20T09:08:18.010 回答
1

不,根本没有区别。只是个人喜好问题。

于 2012-12-20T09:07:00.517 回答
1

两者没有任何区别。

于 2012-12-20T09:07:22.233 回答
1

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

例如,声明char *str1,str2意味着它str1是一个指针,但str2它是一个字符。声明char* str1,str2的含义相同,但令人困惑。

于 2012-12-20T09:08:28.947 回答
0

没有区别。

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

你也可以这样声明:

char * p;
于 2012-12-20T09:08:19.023 回答
0

全然没有区别

两者char *strchar* str相同,甚至

char * str;也是一样的。

空格不会影响这一点,并且*总是与标识符名称一起使用。

是的,第二个问题next都是str指针。

在下面的情况下,

char *str,s;这里strpointerwhiles只是char。如果要将两者都作为指针放在*每个标识符之前。

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

typedef char* pchar;

pchar str, s; // both str and s are pointers
于 2012-12-20T09:10:42.563 回答