- 締切済み
構造体で配列を使用しない方法。
構造体で配列を使用せずに、メモリ領域を獲得する関数を使用する場合はどうすればよろしいですか?? 例 char *str; struct seiseki{ char name[20]; int eig; int suu; int kok; char rank[3]; }; str = ()malloc();
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nk2
- ベストアンサー率23% (6/26)
回答No.3
なぜ配列を使いたくないのかが分からん。 std::vecotr<tmplate T> ではだめか? もし確保するべき配列数が分からないときは、 これを使うのだか。 #include <vector> using namespave std; struct seiseki { vector<char> name; vector<char> rank; };
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.2
構造体の中の char name[20]; を配列を使わないというような意味だったら char *name; にして、 構造体に値を設定するときにmallocした領域を割り当てます。
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
回答No.1
まず、 char *str; ままずいですね。欲しいのは、構造体であって、char ではないですから。 この場合、 struct seiseki *str; に対して、 str = malloc(sizeof struct seiseki * 必要数); で領域が確保できます。 str[1] などで、参照もできます。 あと、malloc() の返り値は、void * なので、任意の型のポインタに代入・比較できます。 なので、malloc() の返り値にキャストは不要です。