当我给printf一个指向char数组的指针时程序崩溃

时间:2012-02-21 19:00:33

标签: c

当我尝试运行以下代码时,我遇到了一个seg错误。我已经尝试通过gdb运行它,我知道错误是作为调用printf的一部分发生的,但我很遗憾,为什么它无法正常工作。

#include <stdlib.h>
#include <stdio.h>

int main() {
  char c[5] = "Test";
  char *type = NULL;

  type = &c[0];
  printf("%s\n", *type);
}

如果我替换printf("%s\n", *type);printf("%s\n", c);我按照预期打印“测试”。为什么它不能用于指向char数组的指针?

3 个答案:

答案 0 :(得分:15)

您正在传递普通char,而printf正试图取消引用它。试试这个:

printf("%s\n", type);
              ^ 

如果您通过*type,就像告诉printf“我在T位置有一个字符串。”

同样type = &c[0]有点误导。你为什么不这样做:

type = c;

答案 1 :(得分:5)

不要取消引用type。它必须保持指针。

答案 2 :(得分:4)

删除typeprintf的解除引用。