私がvoid *は文字列型bに変換され、入力しようとすると、変換経験の問題の種類は、書き込み:
1 。1つの ボイド * A; 2 2 文字列B; 3 3。 B =(文字列)(*); // エラー
次のエラー:
エラー:「void *型は」(void *型のオブジェクトが型を指していない)へのポインタオブジェクトタイプではありません
正しいコード:
無効 * ;
文字列B;
B = *(文字列 *)A。
最初の文字列に変換して(もちろん、得られる参照文字列型用溶液列ポインタ)Bに割り当てられたポインタを、間接参照しました。
根端(C / C ++)を引っ張っQ:
*ボイドが「ヌルポインタ型」は意味意味:ポインタのいずれかのタイプ、またはアドレス値に関連付けられたポインタを、しかし、型が、このオブジェクトのアドレスでは明らかではありません。
空の変数の型が存在しないため、直接ではなく缶のvoid *型の間接参照。
ボイドキーワードは、ボイド関数(で修飾することができる、任意の型を表すことを意図していない、手段が存在しないことを示す「空のタイプ」を表す 空隙 A(ボイド ;) 値を返さないか、返された値がnullである関数を表す リターン ; 機能パラメータ位置が)何の関数パラメータを示していないが、それは文の書かれていません、変数がvoid変更することはできません 無効 ; 、どのようなタイプのボイドが存在しません。
さらに、なぜそこタイプボイドの変数がある、またはなぜ変数の顔ではないことができ、ボイドが「どのようなタイプは」意味と言うことができないのですか?
私たちは、メモリを割り当てます変数を定義し、C / C ++は静的型付け言語ですけど、あなたはどんな型の変数を定義した場合、メモリの異なる種類の異なる変数のシェアは、どのようにメモリを割り当てるために?
だから、Cは、C ++は、変数のいずれかのタイプではありません。しかし、ポインタ変数のすべてのタイプ、両方のint型*、char型の*、文字列*、学生*など、彼らが同じメモリ空間なので、あなたは「ポインタのいずれかのタイプ」、ポインタ型との共有メモリを定義することができますシステムの容量に対処するため、例えば、32ビットシステムは、64ビットシステムでは8つのバイトを占有し、4つのバイトを占有......