理解函数/参数中的星号“*”

时间:2014-12-10 11:55:10

标签: c

我试图了解是否有任何区别:

bool String_Init(String *str, char * s, uint32_t len){};

bool String_Init(String *str, char *s, uint32_t len){};

此外,

const char * String_GetCString(const String * const str){};

const char *String_GetCString(const String * const str){};

谢谢!

2 个答案:

答案 0 :(得分:1)

正如here更详细解释的那样,对于任何类型T,表达式T*表示指向T'的指针。将星号放在函数名中的参数名称或引用指针类型的类型名称无关紧要。参数声明T* argT *arg完全相同。

答案 1 :(得分:1)

您显示的代码对没有差异。他们是一样的。

  • char *s
  • char * s
  • char* s

都是一样的。 大部分时间 额外的空格在c中被忽略。

如果

,请清除您的困惑
char *s

*应该读取作为数据类型的一部分,它不是变量名称的一部分。

恕我直言,为避免混淆,最好写char * s;