这些声明之间有什么区别:
char* str;
和
char *str;
有没有区别?
另一个例子:
char* str;
struct StrStackLink *next;
str
和next
指针是否都是明星的位置有什么意义?
答案 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 *str
和char* str
都相同,甚至
char * str;
也是一样。
空格不会影响这一点,*
总是带有标识符名称。
是的,对于第二个问题,next
和str
都是指针。
在下面的情况中,
char *str,s;
此处str
为pointer
,而s
仅为char
。
如果你想在每个标识符之前将指针放在*
之前。
或者,这里是typedef
的使用,在这种情况下,当你需要多个相同类型的指针时,你应该考虑使用它。
typedef char* pchar;
pchar str, s; // both str and s are pointers