struct point
{
int x;
int *y;
};
void main()
{
int a;
int *b;
a = 13;
cout << a << endl;
cout << &a << endl;
b = &a;
cout << *b << endl;
cout << b << endl;
point pt;
pt.x = 21;
pt.y = &a;
cout << pt.x << endl;
cout << *pt.y << endl;
//point *ppt;
//cout << ppt->x << endl;
//cout << ppt->y << endl;
}
(表示結果)
13
0024FE80
13
0024FE80
21
13
私が2つ分からないことがあります。
int *b; と宣言した場合は、アドレスと値を宣言をしているのでしょうか?
int a; ならば、値を宣言をしていると思います。
アドレスは任意の場所なので、毎回に宣言している場合に変わると思います。
本文は b = &a; の後に b について表示しています。
しかし、前に表示しようとすると途中で落ちます。
int *b; の宣言の意味と、b = &a; の前に書くとなぜ落ちるのか?
//point *ppt;
//cout << ppt->x << endl;
//cout << ppt->y << endl;
構造体のポインターのアロー演算子を使用しようと思いましたが(サンプルで作成しただけ)、ppt->x、ppt->y への値の代入方法が分かりません。
C言語は、業務では1度だけしか使ったことはありません。
少し複雑な構造体とポインターになるとどのように考えれば良いかが分からないという意味です。
どなたか、教えて頂けないでしょうか?
よろしくお願いいたします。
{
int x;
int *y;
};
void main()
{
int a;
int *b;
a = 13;
cout << a << endl;
cout << &a << endl;
b = &a;
cout << *b << endl;
cout << b << endl;
point pt;
pt.x = 21;
pt.y = &a;
cout << pt.x << endl;
cout << *pt.y << endl;
//point *ppt;
//cout << ppt->x << endl;
//cout << ppt->y << endl;
}
(表示結果)
13
0024FE80
13
0024FE80
21
13
私が2つ分からないことがあります。
int *b; と宣言した場合は、アドレスと値を宣言をしているのでしょうか?
int a; ならば、値を宣言をしていると思います。
アドレスは任意の場所なので、毎回に宣言している場合に変わると思います。
本文は b = &a; の後に b について表示しています。
しかし、前に表示しようとすると途中で落ちます。
int *b; の宣言の意味と、b = &a; の前に書くとなぜ落ちるのか?
//point *ppt;
//cout << ppt->x << endl;
//cout << ppt->y << endl;
構造体のポインターのアロー演算子を使用しようと思いましたが(サンプルで作成しただけ)、ppt->x、ppt->y への値の代入方法が分かりません。
C言語は、業務では1度だけしか使ったことはありません。
少し複雑な構造体とポインターになるとどのように考えれば良いかが分からないという意味です。
どなたか、教えて頂けないでしょうか?
よろしくお願いいたします。