12

コードを見てください。clang から「互換性のない整数変換へのポインター」というエラーが表示されます。なぜそれが起こっているのですか?

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

4 に答える 4

3

この行:

*name = "david";

読むべき

name = "david";

*name は (このコンテキストでは) name[0] (つまり、name 変数が指す文字列の最初の文字) と同義です。ポインターの内容ではなく、name 変数を、文字列リテラル "david" が指しているのと同じものを指すように割り当てる必要があります。

于 2012-12-27T20:32:32.533 に答える
0

ここを見てください名前は、
文字の配列にしたライブラリ関数mallocを使用した文字へのポインタではないため、ライブラリ関数strcpy(p、 "david") を 使用する必要が
あるポインタのようなアドレスを単純に指すことはできません。それだけがあなたに望ましい結果を与えるでしょう

于 2012-12-26T08:27:43.843 に答える