b = "Hello";
この行は、大量の char メモリを割り当て、そのアドレスをvoid
ポインタ variableに割り当てますb
。
void ポインターは、他のデータ型のアドレスを格納できます。void ポインターの唯一の制限は次のとおりです。
- 明らかな理由で void ポインターを逆参照できません
sizeof(void)
違法です
- void ポインターに対してポインター演算を実行することはできません
ただし、GCC はそれが 1 であると想定しsizeof(void)
、void ポインターでのポインター演算を許可します。
a=b;
a
これは、 void ポインターに含まれるアドレスに初期化された典型的な char ポインターb
です。これは合法ですが、悪用すると影響が出る可能性があります。
printf("%s", a);
これは単純な printf ステートメントです。
このコードのすべてが問題ありません。
*
はい、ポインタで割り当てられたメモリに値を割り当てるために使用する必要があります:例:
char *c=malloc(sizeof(char));
*c='a';
また
char a='a';
char *c=&a;
*c='b';
また、*
ダブル ポインターを使用する場合、 を使用して別のポインターを初期化します。
char *a=NULL;
mymalloc(&a);
void mymalloc(char **a)
{
*a=malloc(10);
return;
}
お役に立てれば。