可能重复:
C - 指针初始化,星号位置
这些声明之间有什么区别:
char* str;
和
char *str;
有什么区别吗?
另一个例子:
char* str;
struct StrStackLink *next;
str
两者都是next
指针还是星星的位置有什么意义?
可能重复:
C - 指针初始化,星号位置
这些声明之间有什么区别:
char* str;
和
char *str;
有什么区别吗?
另一个例子:
char* str;
struct StrStackLink *next;
str
两者都是next
指针还是星星的位置有什么意义?
没有区别 - 两者都声明了一个指向 char 的指针。但是,在同一行上声明多个变量时会有所不同
char* str1, str2;
声明str1
为指针和str2
字符,而
char *str1, *str2;
声明两个 char 指针
您编写的所有 char 指针声明都是等效的。星星的位置确实改变了任何东西。
可能会造成混淆的情况是以下声明
char* a, b;
在这里,您声明 a,指向 的指针char
和 b,a char
。因此,为了清楚起见,我建议用变量名折叠星号。
char *a, b;
不,根本没有区别。只是个人喜好问题。
两者没有任何区别。
不,没有区别,但符号char *str
更好,因为你知道那str
是一个指针。
例如,声明char *str1,str2
意味着它str1
是一个指针,但str2
它是一个字符。声明char* str1,str2
的含义相同,但令人困惑。
没有区别。
你有什么证据让你这么想吗?
你也可以这样声明:
char * p;
全然没有区别
两者char *str
都char* str
相同,甚至
char * str;
也是一样的。
空格不会影响这一点,并且*
总是与标识符名称一起使用。
是的,第二个问题next
都是str
指针。
在下面的情况下,
char *str,s;
这里str
是pointer
whiles
只是char
。如果要将两者都作为指针放在*
每个标识符之前。
或者,typedef
当您需要多个相同类型的指针时,在这种情况下应该考虑使用它。
typedef char* pchar;
pchar str, s; // both str and s are pointers