
関数の戻り値を構造体の配列(アドレスを受け渡しを利用して)にしたいのですがうまくゆきません。
以下のプログラムではコンパイルはできるのですが、
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言語
-
コンボボックスでデフォルト値...
-
10人分の生徒の英語の点数{32,3...
-
define で 配列
-
メンバ変数の取得
-
IPアドレスを配列に代入する方法。
-
C#で構造体の配列を持った構造...
-
C言語 ビットフィールドについて
-
C#で配列が空かを判定するには?
-
fclose()でセグメンテーション違反
-
vector配列の重複を無くすには?
-
ポインタを使って構造体の配列...
-
C++DLLからC#へのコールバック...
-
C言語 ファイルの指定された行...
-
C++:構造体:newで入れ子:del...
-
2番目の最大値を求める
-
構造体のextern方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
C言語において、 配列要素をひ...
-
c言語
-
C言語 ファイルの指定された行...
-
define で 配列
-
C#で構造体の配列を持った構造...
-
C言語の課題が出たのですが自力...
-
char型配列をint型に代入するには
-
C#で配列が空かを判定するには?
-
MFCのCArrayを使った二次元配列
-
コンボボックスでデフォルト値...
-
MFC - ダイアログボックスのPic...
-
c言語 構造体
-
2番目の最大値を求める
-
C言語から質問です。
-
Cのエラー
-
プログラミングに関する問題が...
-
C言語の2次元配列 容量が大き...
-
Visual C++を 用いたテキストフ...
おすすめ情報