c - put() 与 const char 的问题

标签 c pointers puts

我无法理解 c 如何使用 put() 来显示消息的一部分。我认为等效的两种方法对于该函数的工作方式并不相同。例如

 void skippie(char *msg)
 {
    puts(msg + 6);
 }

 char *msg = "Don't call me!";
 skippie(msg);

这编译得很好,但事实并非如此

void skippie(char *msg)
{
    puts(msg[6]);
}

char *msg = "Don't call me!";
skippie(msg);

puts()如何区分两者并只编译其中之一?编译器提示它需要一个“const”字符,但即使我尝试使用该语法它也会失败。谁能解释一下吗?

最佳答案

索引运算符也会取消引用指针,因此

msg[6] 相当于 *(msg + 6),而不是 msg + 6

此外,您无法将 const char* 传递给函数,而函数需要 char*。即,您还必须更新函数签名。

关于c - put() 与 const char 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28398328/

相关文章:

c - 奇怪的 printf 和 puts 语句解释

c - 使用 C 在 OS X 上确定进程是否暂停(使用 SIGSTOP)

c - Unix 中的 'whiteout' (S_IFWHT) 是什么?

java - 重建 Android Studio 项目时出现错误

你能解释一下吗,挑战?

c - 不使用 for 循环打印矩阵

c++/c 困惑

c - 当 p 指向一个字符时,strcmp(p, "\n") 是未定义的行为吗?

c++ - 作为类成员更新引用

c - 如何修复 C 中的 "incompatible pointer type"错误?