1. ホーム
  2. c

[解決済み] なぜこのようなエラーが発生するのか:互換性のないポインタから整数への変換?

2022-02-13 07:22:37

質問

clangがエラー "互換性のないポインタから整数への変換" を出していますが、なぜでしょうか?

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
    char* name;
    name = malloc (sizeof(char) * 6);
    *name = "david";
    return 0;
}

解決方法は?

何が起こっても、この行で起きているのです。

*name = "david";

のタイプは *name となります。 char を再参照しているので char が指す name . の型は "david"char[6] であることから 文字列リテラル の6文字(5文字+ヌル文字)です。配列型 減衰 をポインタに変換し char 積分型 この代入は整数へのポインタを設定しようとします。 incompatible pointer to integer conversion .

代入の左辺が正しい型を持っていたとしても、代入演算子で配列をコピーするだけではダメだったんですね。もし、あなたが name から "david" を使用する必要があります。 strcpy( name, "david" ) .