C言語ポインタ配列初期化

845 ワード

1.charタイプのポインタchar   *names[]={ "zhangsan" , "lisi" , "wangwu" };//
 
2.その他のタイプのポインタint *nums[]={1,2,3,4,5};//このように初期化することはできません
理由:ポインタの初期化または付与には、0値、定数式、およびタイプが一致するオブジェクトのアドレスを使用できます.//ポインタはアドレスで初期化する必要があります.文字列の文字面値定数タイプはconst char*で、ポインタタイプと一致し、値を割り当てることができます.
整形字面定数はint,longなどのタイプであり,詳細は『C++Primer』第2章2.2節を参照する.ただし、ポインタに値を割り当てるのはアドレス、すなわち&iであるべきであり、VS 2010でコンパイルエラーが発生しても、intタイプをint*タイプに割り当ててはいけないというメッセージが表示されます. 
3.
char *p1 = "12345";//はい、char*形ポインタを定義し、アドレスを初期化することを意味します.
ただしint*p 1=12345;//いけません
 
まとめ:文字列のフォント値定数タイプはconst char*でポインタを初期化できます.
整数定数のタイプはintで、ポインタを初期化するために使用できません.