#include <stdio.h>
struct data {//構造体
int x;//メンバ1
int y;//メンバ2
int *z;//ポイント型メンバ1
};
int main(void){
struct data d;//構造体宣言
struct data *pd;//ポインタ型構造体宣言
int a;//int型宣言
a= 3;//aに3を代入
d.x = 1;//構造体dのxに1を代入
d.y = 2;//構造体dのyに2を代入
d.z = &a;//構造体dのint型ポインタ変数zに3を代入
pd = &d;//ポインタ型構造体pdに構造体dを代入
printf("d.x = %d\n", (*pd).x);//1
printf("d.y = %d\n", (*pd).y);//2
printf("*(d.z) = %d\n", *((*pd).z));//3
return 0;
}
//の後に自分で解説を付け加えたのですが、合っているかわかりません。修正して解説していただけませんか?よろしくお願いします
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>ポインタ型構造体宣言
構造体へのポインタ型の変数pdの宣言
#ポインタ型構造体では意味不明だ。
>構造体dのint型ポインタ変数zに3を代入
構造体のメンバd.zが変数aを指すようにする。
#ポインタ型に整数は代入できない。
#代入されるのはポインタ値(アドレス、参照)
>ポインタ型構造体pdに構造体dを代入
pdが構造体dを指すようにする。
#これも構造体の代入ではない。
No.2
- 回答日時:
int *z;//ポイント型メンバ1
は
int *z;//イント(またはインテジャー)型メンバ3のポインタ宣言
のほうがわかりやすいと思います。
struct data *pd;//ポインタ型構造体宣言
は
struct data *pd;//構造体のポインタ宣言
のほうがわかりやすいと思います。
「ポインタ型」と言う表現はしばしばしますが、実態は、Int型へのポインタ型、String型へのポイント型と言ったように他の型と合わせて作られます。なんらかの型の変数のアドレスを示すもので、派生型ともいいます。
No.1
- 回答日時:
「ちょっと変」くらいのものは許容するとして、間違っている部分だけ書くと、
ポインタ型構造体宣言 ⇒ 構造体へのポインター宣言
構造体dのint型ポインタ変数zに3を代入 ⇒ 構造体dのint型へのポインタ変数zにint型変数のアドレスを代入
ポインタ型構造体pdに構造体dを代入 ⇒ 構造体へのポインター変数pdに構造体dのアドレスを代入
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# #include <stdio.h> #include <stdlib.h> #include <s 2 2021/12/05 16:11
- C言語・C++・C# 構造体メンバの初期化 2 2022/02/05 20:50
- C言語・C++・C# C言語の問題です。 1 2021/12/22 03:38
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# C言語の問題です。大至急回答お願いします 次の条件を満たすキュー・プログラムを作成せよ。 ①キューに 1 2021/12/05 01:35
- C言語・C++・C# c言語 配列から数字だけをint型として抜き取りたい 3 2021/12/05 13:53
- C言語・C++・C# プログラムが書けません。 4 2023/01/22 22:57
- C言語・C++・C# C言語です 2 2023/10/16 01:43
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Integer変数をカラにしたいので...
-
VBAのプログラムで、DIAG = 1# ...
-
C++ 構造体の一括初期化 {0}
-
charとucharの違い
-
変数の初期化について
-
構造体にする理由・利点・使用例
-
C言語 構造体の中に共用体を定...
-
1バイトデータの読み出しについて
-
VB.NETのStructureというのはど...
-
構造体の初期化方法について
-
FILE構造体がどのように定...
-
VBAの変数のデータ型を変更する...
-
値が代入されてない時
-
日付チェック関数について
-
VBAにてcolorindexを変数に格納...
-
ヘッダファイルと構造体
-
整数から16進数への変換 現在c...
-
ユーザー定義型変数の一括初期化
-
関数から配列を返すには?
-
C言語 配列の長さの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
C++ 構造体の一括初期化 {0}
-
long型のデータをバイト型の配...
-
「#undef」と「#define」の使い...
-
構造体のデータを丸ごとコピー...
-
VBAにてcolorindexを変数に格納...
-
C言語 構造体の中に共用体を定...
-
値が代入されてない時
-
異なる構造体のデータのコピー
-
typedefをプログラム中で解除す...
-
構造体のポインタにNULLが入らない
-
charとucharの違い
-
整数から16進数への変換 現在c...
-
VBAの変数のデータ型を変更する...
-
VB.NETのStructureというのはど...
-
構造体を型の異なる構造体に代入
-
日付チェック関数について
-
命名規則 VB 構造体
-
構造体の初期化方法について
おすすめ情報