【发布时间】:2021-12-11 06:07:09
【问题描述】:
我写了一些东西来熟悉指针。
void print_line(int64_t number, char *string)
{
(void)number;
(void)string;
printf("%d %s \n", number, *string);
return;
}
int main()
{
print_line(42, "Hello World!");
return 0;
}
我希望结果是 42 和“Hello World!”。但是它是 42(空)。 我假设我以错误的方式使用了指针。 我的错误在哪里?为什么地址是空的?
非常感谢!
【问题讨论】:
-
如果要打印整个字符串,为什么要取消引用指针?这不是您在使用
%s说明符时应该传递给printf的内容 -
第 3 行和第 4 行是什么?我最近似乎经常看到这种情况。
-
@Dúthomhas 垃圾。他们应该被删除。在其他情况下,它可以用来避免“未使用”的警告。
-
我知道这毫无意义。如果您有未使用的参数,请不要指定名称,只需指定类型。这真的是当今人们正在做的事情吗? (因为这很奇怪,恕我直言。)
-
如果您使用 gcc,请使用
-Wall -Wextra -Wpedantic -Werror。
标签: c printf c-strings uint64 conversion-specifier