次のコードを実行しようとすると、segフォルトが発生します。私はgdbで実行しようとしましたが、エラーはprintf
の呼び出しの一部として発生していることを理解していますが、なぜそれが正しく機能していないのか分かりません。printfにchar配列へのポインタを与えるとプログラムがクラッシュする
#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", c);
でprintf("%s\n", *type);
を交換した場合、私は私が期待通りに印刷された「テスト」を取得します。 char配列へのポインタではうまくいかないのはなぜですか?
私はちょうどニットをしたいと思います:Cはプログラムではないので "C"はクラッシュしませんでした。あなたのコンパイラはクラッシュしませんでした。 ***あなたはクラッシュするプログラムを書くためにCを使いました*** –
あなたは正しいです。私は何を言おうとしていたのか分かりますが、明らかにあなたもそうですが、これらのことについて話し合うときには正確であることが重要です。 – WhiteHotLoveTiger
あなたの '%s'を'%c'に変更して 'c [0]'を見てください。 – wulfgarpro