
ポインタを使ってメンバに値を入力して表示するプログラムを作ったのですが、mainのstruct XYZ aというオブジェクトと*bというそれを指すポインタを使ってプログラムを表示するにはどうすればいいのでしょうか。
これがプログラムです。
#include <stdio.h>
struct XYZ {
int x;
long int y;
double z;
};
void set_xyz(struct XYZ *p,int x,long int y,double z) {
p->x=x;
p->y=y;
p->z=z;
}
//void set_xyz(struct XYZ *,int,long int,double);
int main() {
struct XYZ a = {12,999999,1.41421356},*b; //ここのポインタ変数bでエラーが表示されます。
set_xyz(b,a.x,a.y,a.z);
printf("a.x = %d\na.y = %d\na.z = %lf\n",b->x,b->y,b->z);
return 0;
}
エラーの内容は「初期化されていないローカル変数 'b' が使用されます」となっています。
初歩的な質問ですみません・・・。
No.4ベストアンサー
- 回答日時:
>エラーの内容は「初期化されていないローカル変数 'b' が使用されます」となっています。
b = &a;
とか、
struct XYZ c;
b = &c;
で、ポインタ変数bを初期化(bを struct XYZ のデータのどれかを指す)すれば、いいだけではないですか?
解説
struct XYZ a = {12,999999,1.41421356},*b;
は、
struct XYZのデータ a と
struct XYZのデータを指すポインタ変数 b
を定義しています。
aの中身は {12,999999,1.41421356} です
bの中身はゴミ(何を指しているか不明)です
b = &a;
ポインタ変数 b はstruct XYZのデータ a を指します
struct XYZ c;
b = &c;
struct XYZのデータ c を定義し、
cの中身はゴミですが、
ポインタ変数 b はstruct XYZのデータ c を指します
この直後に
set_xyz(b,a.x,a.y,a.z);
を実行すれば、ポインタ変数 b の指すstruct XYZのデータ(今回はaやc)
に a.x,a.y,a.z の3つのデータが書き込まれます。
No.3
- 回答日時:
bはポインタなので、変数を入れる場所がありません。
bをポインタではない宣言して、set_xyzに渡すときポインタで渡せばいい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
ExcelVBAでのkernel32(64bit)
-
ハンドルはポインタか
-
init関数の意味
-
C言語のポインタに直接アドレス...
-
LPSTR型の初期化について
-
fopne で失敗する原因
-
C言語についてです。 独学で進...
-
構造体のアドレス渡し
-
ファイルポインタのヘッダーフ...
-
どうしてエラーになるかわかり...
-
戻り値で構造体を返すことは可...
-
Run-Time Check Failure #3とい...
-
ダイアログから、ドキュメント...
-
無効なポインタ操作のエラー
-
C#,C++/CLI,MFCにおけるデータ...
-
別のDLLのダイアログを・・・
-
関数内、ファイルのstatic変数
-
ReadFileの読み込みエラーについて
-
VB.NET DLL【API関数(コールバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
セグメントエラー
-
Run-Time Check Failure #3とい...
-
ExcelVBAでのkernel32(64bit)
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
参照型で受け取った引数をポイ...
-
トリプルポインタが必須!とな...
-
ハンドルはポインタか
-
LPSTR型の初期化について
-
ポインターの使用法や利点
-
ポインタについて
-
c言語で任意のファイルから読み...
-
基本アルゴリズムの『返す』の...
-
コンストラクタでnewを失敗した...
-
ハンドル、アドレス、ポインタ...
-
アプリを32bitから64bit移行
-
デバイスハンドルとは?
-
NULLとブランクの違い
おすすめ情報