当我尝试运行以下代码时,我遇到了一个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数组的指针?
答案 0 :(得分:15)
您正在传递普通char
,而printf
正试图取消引用它。试试这个:
printf("%s\n", type);
^
如果您通过*type
,就像告诉printf
“我在T位置有一个字符串。”
同样type = &c[0]
有点误导。你为什么不这样做:
type = c;
答案 1 :(得分:5)
不要取消引用type
。它必须保持指针。
答案 2 :(得分:4)
删除type
中printf
的解除引用。