このプログラムの意味は? – プログラミング – Home

このプログラムの意味は?
 
通知
すべてクリア

このプログラムの意味は?


tk
 tk
(@tk)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

#include<stdio.h>
typedef struct xyz{
int x;
double y;
short z;
}XYZ,*P_XYZ;

main(){
XYZ a;
P_XYZ p;//(XYZ*p;
p=&a;

}

このプログラムの意味がわかりません。
どなたか教えていただけないでしょうか?


引用解決済
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

何の出力もありませんから、実行することに何の意味もありません。


返信引用
KING・王
 KING・王
(@KING・王)
ゲスト
結合: 20年前
投稿: 122
 

プログラムの意味としては、基本的にεπιστημηに同意です。

ソースコードの意味(?)しては、次のような感じだと思います。
(1)構造体を定義
(2)typedefでその構造体に別名をつる
(3)構造体(用)の変数を宣言
(4)構造体へのポインタ(用)のポインタ変数を宣言
(5)上記(3)宣言された変数のアドレスを、上記(4)で宣言された変数に代入

#すいません。宣言と定義の使い方にいまいち自信がありません。
#ちょっと調べてのですが・・・間違っているようなら、識者の方々、フォローをお願いしま
す。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

以下のコードと同義です。

struct xyz{
int x;
double y;
short z;
};

typedef struct xyz XYZ;
typedef struct xyz* P_XYZ;

/* …なので、 */
main(){
XYZ a; /* struct xyz a; と同じ */
P_XYZ p;/* struct xyz* p; と同じ */
p=&a; /* aのポインタをpに代入 */

}


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

3),4) 各変数の確保は宣言ではありません。(宣言同様の効果も内包してますが)

宣言(Declarations)と呼ばれるのは以下に列挙されてるものです。
ISO/IEC14882:2003 3.1 Declarations and definitions
定義を伴わない宣言は、基本的に名前を引き込む以上の効果を持ちません。
# extern 宣言とか using 宣言とか typedef 宣言とか
# 関数(プロトタイプ)宣言とか前方宣言とか.....


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

> 3),4) 各変数の確保は宣言ではありません。(宣言同様の効果も内包してますが)

Cにおいて,識別子の定義は宣言です。
at ISO/IEC 9899:1999 6.7 Declarations / Paragraph 5
> A definition of an identifier is a declaration for that identifier that:
> ―for an object, causes storage to be reserved for that object;
> ―for a function, includes the function body;
> ―for an enumeration constant or typedef name, is the (only) declaration of
the identifier.

このあたり,CとC++で主従関係が逆転しています。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

> Cにおいて,識別子の定義は宣言です。

Cはそうだったんですか、知りませんでした(一緒だと思ってました)。御指摘感謝です。

# 言われてみれば昔Cを学びだした頃は規格書なんてチェックした記憶がない....orz


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

多分、typedefの使い方とか、ポインタ変数と実変数の関係とかを単に示したかっただけでは
ないかと思うのですけれど。
おそらくそれ以上の意味は無いと思います。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

茶々を入れたい訳ではありませんが

C言語の入門書をお読みになれば、大体分かる程度の内容かと思います
OSやコンパイラに依存しない入門書で十分理解可能なものではないでしょうか


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました