return で配列を返すにはどうしたらよいのでしょうか。
例えば以下のような場合です。
int main (){
char Value[] = "999";
int a;
a = test(Value);
printf ("%d", a);
}
int test(char *Value)
{
int nVal[255];
ここで nVal に適当な処理をして・・・
return Value;
}
int a を配列とかにしてみましたけど、コンパイラが
通りません。
要は配列数値を main で受け取って表示したいのですが、
本日C言語はじめたところなので、教えていただければありががたいです。
No.1
- 回答日時:
nValが何をするものなのか
よく分からないんですけど…
とりあえず動くソースを書いてみました.
returnで配列を返すことはできません.
(配列という変数型の概念がないから)
配列処理を行うには,
・あらかじめ器を用意しておく
(Value[256]のこと)
・ポインタを関数に渡してやり,
その中身に対して処理を行う.
という手順になります.
~~~~~~~~
int main (void){
char Value[256];
int a;
test(Value);
printf ("%d %d\n", Value[0], Value[255]);
}
void test(char *Value)
{
int nVal[256];
nVal[0] = 1;
nVal[255] = 256;
*(Value + 0) = nVal[0];
*(Value + 255) = nVal[255];
return;
}
ありがとうございます。
最大の謎だった、
> returnで配列を返すことはできません.
がここではっきりとわかり、少し頭の整理がつきました。
Cは大変ですね・・・
私の VC++6.0 で、*(Value + 0) のところで、何故かコンパイルが通らないのですが・・・でも、ちょっと自分で勉強してみます。
No.2
- 回答日時:
#include <stdio.h>
char * test(char *Value);
int main (){
char Value[] = "999";
char * a;
a = test(Value);
printf ("%S", a); 怪しいしばらく使ったことがない
}
char * test(char *Value)
{
int nVal[255];
ここで nVal に適当な処理をして・・・
return Value;
}
No.3ベストアンサー
- 回答日時:
戻り値は1つしか戻せません。
引数で配列の先頭のポインタが渡され、それを使って関数で配列の中身を
書き換えて戻ってきて、メインで配列を参照すればいいです。
参考urlの(3)を参考にしてください。
参考URL:http://www9.plala.or.jp/sgwr-t/c/sec11-3.html
わかりやすいページを御紹介いただきまして、ありがとうございます。何度もみなおして、概念が少しわかりました。まさか短時間でこんなに回答いただけるとはおもっていなかったので、少し感激しております。
No.4
- 回答日時:
配列を関数の戻り値にするには、関数の型をポインタ型にする必要があります。
無理に書けばこんな感じでしょうね。
int main (void)
{
char Value[] = "999";
int *a; /* ポインタ型の変数 */
a = test(Value);
printf ("%d,%d\n", a[0],a[255]);
}
int *test(char *Value)
{
static int nVal[255];/* staticでなければmain()で参照できない */
ここで nVal に適当な処理をして・・・
nVal[0]=1000;/* 単なる確認用です */
nVal[255]=1255;
return nVal;/* ポインタ型 */
}
ありがとうございました。
配列はポインタで扱う、のが基本なのですね。
また一歩前進した、という感じです。
ソースまで書いていただき、感謝です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
C言語 exitの使い方
C言語・C++・C#
-
C言語初心者の質問失礼します。
C言語・C++・C#
-
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
-
4
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
5
2次元配列を戻り値とする関数?
C言語・C++・C#
-
6
C言語 配列の長さの上限
C言語・C++・C#
-
7
配列の要素数に変数を入れたいときには
C言語・C++・C#
-
8
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
9
C++ 配列を返すには?
C言語・C++・C#
-
10
C言語での引数の省略方法
C言語・C++・C#
-
11
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
12
配列を使わずに、変数名を動的にループで回したい
C言語・C++・C#
-
13
char*を初期化したいのですが
C言語・C++・C#
-
14
define で 配列
C言語・C++・C#
-
15
複数の変数を宣言する時、同時に初期化?できないでしょうか?
Java
-
16
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
17
ファイルから読み込んだデータを構造体に格納できますか?
C言語・C++・C#
-
18
unsigned long long 型のフォーマット指定子
C言語・C++・C#
-
19
strcat関数を自作したいです
C言語・C++・C#
-
20
16進数を10進数に簡単に変換する関数は?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
C#で構造体の配列を持った構造...
-
define で 配列
-
C言語の配列のコピーについて
-
関数の仮引数は宣言か式か
-
char型配列をint型に代入するには
-
MFCのCArrayを使った二次元配列
-
C言語のプログラミングで、ある...
-
配列のアドレス部
-
Cのエラー
-
コンボボックスでデフォルト値...
-
int i, int i[1];
-
構造体のextern方法
-
MFC - ダイアログボックスのPic...
-
VBのByte配列をVARIANTに格納し...
-
c言語 構造体
-
C言語について質問です。
-
C#で配列が空かを判定するには?
-
C言語 配列の長さの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
c言語
-
c言語プログラミング 等差数列...
-
define で 配列
-
構造体のextern方法
-
C#で構造体の配列を持った構造...
-
C言語において、 配列要素をひ...
-
MFC - ダイアログボックスのPic...
-
C言語の2次元配列 容量が大き...
-
2次元配列のマスを数える方法...
-
C言語 ファイルの指定された行...
-
Cのエラー
-
コンボボックスでデフォルト値...
-
C#で配列が空かを判定するには?
-
C#でのフィボナッチ数列
-
ポインタを使って構造体の配列...
-
C言語の課題が出たのですが自力...
-
MFCのCArrayを使った二次元配列
-
C言語の配列のコピーについて
おすすめ情報