【问题标题】:How can I hand over a variable to a *char function?如何将变量移交给 *char 函数?
【发布时间】:2019-06-21 19:04:52
【问题描述】:

我尝试使用 rle_code(&line); 将此指针 char *line; 交给此函数:

char *rle_encode(char *line)
{

    return line;
}

我在这里做错了什么?

【问题讨论】:

  • 删除&...好吧,至少它在类型方面是正确的。
  • 在您的问题中显示minimal reproducible example。它必须有一些main
  • 它做了什么不该做或不该做的事情?

标签: c function char


【解决方案1】:

line 已经隐式指向line 中字符串的第一个元素。当您传递 &line 时,您传递的是一个指向字符串中第一个元素的指针。

如果您想明确说明您传递的内容,您可以传递 &line[0] - 这与传递 line 相同,但更清楚地说明了您传递的内容。

看看研究这段代码的输出是否有助于你理解间接级别:

char *line = "Hello World";
char **p = &line;
printf("%p\n", (void *)line);
printf("%p\n", (void *)&line[0]);
printf("%p\n", (void *)&line);
printf("%p\n", (void *)p);
printf("%s\n", (char *)*p);

【讨论】:

  • '&line[0]' 并没有比简单地写 'line' 更清楚地说明任何事情。它只是杂乱无章。
  • @nicomp 这是见仁见智的问题。对于学习指针语义的人来说,这可能会对他们有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多