私は今プログラミング(C++)を勉強しているのですが、構造体に苦戦しています。分からないことがいくつかあります。もし知っていたらどれでもいいですので、よろしければ教えてください。
1、たとえば構造体を宣言するときに
struct abc{
int s;
struct abc xx;
struct abc yy;
};
と宣言するときがあります。でも上記の例と下記の例との違いが分かりません。
struct abc{
int s;
struct abc xx;
struct abc yy;
}abc;
2、たとえばメインの最初にこのように宣言されているとします。
int j, i;
struct abc *kk, *nn, *mm;
これはここに宣言したものがローカルで、1のときに宣言したものがグローバルと考えていいのでしょうか?
3、メインの中に次のようなプログラムがあったとします。
kk->xx = j;
kk->yy = j;
nn->yy = NULL;
i = kk->xx;
i = kk;
これらがそれぞれどのような意味があるのでしょうか。
これらでわかることがあればぜひ教えてください。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
1.
質問の内容では紛らわしいです。
struct abc{
int s;
struct abc xx;
struct abc yy;
} abc;
ではなく
struct abc{
int s;
struct abc xx;
struct abc yy;
} data;
等とした方が理解しやすいです。
後述の方は
struct abc data;
と宣言しているのと同じ意味を持ちます。
つまり、「構造体の定義」と「定義した構造体で変数を宣言する」ことを同時に行っています。
2.
>これはここに宣言したものがローカルで、1のときに宣言したものがグローバルと考えていいのでしょうか?
「ローカル」「グローバル」の意味は理解されていますか?
変数宣言だけでは「ローカル」「グローバル」の判別はできません。
変数の宣言されている「場所」により判別します。
例えば、関数の中に構造体の定義と変数宣言を行っていれば、それは「ローカル」ということになります。
3.
>これらがそれぞれどのような意味があるのでしょうか。
2.の続きですか?
「->」は「アロー演算子」といい、構造体のポインタを使用している場合にメンバに対して値をやり取りする場合に使用します。
ところで、質問のプログラムは何かの記述を正確にコピーしていますか?
一部おかしいところがありますよ。
No.2
- 回答日時:
回答ではありませんが、
struct abc{
int s;
struct abc xx;
struct abc yy;
};
これは間違っています。
struct abc型の定義の中でstruct abc型の変数を宣言してはいけません。
セミコロンの前の時点では struct abc は不完全型で、ポインタを宣言することしかできません。
そもそも、こんな構造体があったらサイズが無限になって大変です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラムが書けません。 4 2023/01/22 22:57
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/03/09 14:24
- C言語・C++・C# leetcode21 1 2022/04/21 11:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
C++ 構造体の一括初期化 {0}
-
「#undef」と「#define」の使い...
-
構造体のデータを丸ごとコピー...
-
long型のデータをバイト型の配...
-
Integer変数をカラにしたいので...
-
値が代入されてない時
-
構造体にする理由・利点・使用例
-
C言語 構造体の中に共用体を定...
-
ローカル変数の多重定義
-
C++/CLIの構造体のコンストラク...
-
VBAの変数のデータ型を変更する...
-
typedefをプログラム中で解除す...
-
構造体について
-
整数から16進数への変換 現在c...
-
日付チェック関数について
-
C言語のキャストについて
-
VBAにてcolorindexを変数に格納...
-
VBAで符号無し整数
-
[Scilab]関数の宣言とodeの使い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
「#undef」と「#define」の使い...
-
C++ 構造体の一括初期化 {0}
-
構造体のデータを丸ごとコピー...
-
C言語 構造体の中に共用体を定...
-
VBAにてcolorindexを変数に格納...
-
long型のデータをバイト型の配...
-
値が代入されてない時
-
charとucharの違い
-
typedefをプログラム中で解除す...
-
構造体のポインタにNULLが入らない
-
異なる構造体のデータのコピー
-
整数から16進数への変換 現在c...
-
VB.NETのStructureというのはど...
-
VBAの変数のデータ型を変更する...
-
構造体にする理由・利点・使用例
-
winsockのsendtoで送れるデータ型
-
VBAで符号無し整数
-
命名規則 VB 構造体
おすすめ情報