
関数の戻り値を構造体の配列(アドレスを受け渡しを利用して)にしたいのですがうまくゆきません。
以下のプログラムではコンパイルはできるのですが、
a0 = 2
a1 = 4198512
a2 = 4329332
と表示されてしまいa1,a2がうまくゆきません。
*********************************************
#include<stdio.h>
struct test{
int a;
};
struct test *func(void);
void main(void)
{
struct test *data;//構造体ポインタ
int i;
data = func(); //ポインタにtest関数の戻り値(アドレス)を代入
for(i=0;i<=2;i++){
printf("a%d = %d\n",i,(data+i)->a); //構造体要素を表示
}
}
struct test *func(void)
{
struct test data[3]={1,2,3}; //構造体配列を定義
return (&data[0]); //構造体配列の先頭アドレスを返す
}
*************************************************
test関数から受ける取ったアドレス(&data[0])をポインタ(data)に代入して1づつずらして表示させれば
a0=1,a1=2,a=3
となると思ったのですがどこが間違っているのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
struct test data[3]={1,2,3};
auto変数は関数からの脱出時になくなってしまいます。
static struct test data[3]={1,2,3};
静的変数として宣言しましょう。
return (&data[0]); //構造体配列の先頭アドレスを返す
ここは
return (data); //構造体配列の先頭アドレスを返す
こうじゃないと警告が出ませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
c言語
-
配列の要素数に変数を入れたい...
-
C言語において、 配列要素をひ...
-
2番目の最大値を求める
-
C#で構造体の配列を持った構造...
-
MFCのCArrayを使った二次元配列
-
ファイルのデータを構造体に代...
-
C#で配列が空かを判定するには?
-
RAW画像高速表示について
-
C言語についてです 5人のテスト...
-
C言語 ファイルの指定された行...
-
define で 配列
-
配列における数値の比較について
-
要素数・要素の値が未定の配列...
-
ループカウンタを使用せず、配...
-
コンボボックスでデフォルト値...
-
引数で指定された配列の要素数...
-
配列のアドレス部
-
C言語 配列の長さの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
C言語において、 配列要素をひ...
-
c言語
-
C言語 ファイルの指定された行...
-
define で 配列
-
C#で構造体の配列を持った構造...
-
C言語の課題が出たのですが自力...
-
char型配列をint型に代入するには
-
C#で配列が空かを判定するには?
-
MFCのCArrayを使った二次元配列
-
コンボボックスでデフォルト値...
-
MFC - ダイアログボックスのPic...
-
c言語 構造体
-
2番目の最大値を求める
-
C言語から質問です。
-
Cのエラー
-
プログラミングに関する問題が...
-
C言語の2次元配列 容量が大き...
-
Visual C++を 用いたテキストフ...
おすすめ情報