
こんにちは。
授業でC原語を習っており、その課題で詰まった所についての質問です。
※以下の関数については可能な限り簡略化しています。
typedef struct {
char name[10];
int height;
} Person;
Person *bin_search( const Person *key)
{
return (&key);
}
以上のような構造体と関数があった場合、bin_searchでkeyを返したいのですが、
return (&key);
では、コンパイルするとその行について
return from incompatible pointer type
warning: function returns address of local variable
とエラーが出てしまいます。
return (key);
return (*key);
などとりあえず試してはみたのですがどれも上手くいきません。
そもそも関数名の前に*(間接演算子?)があること自体がよくわかっていないです……
なので、返り値をどうすれば正しく機能してくれるのか教えていただけるとありがたいです。
※課題で指定されているので、関数頭部については変更しないとします。
No.2
- 回答日時:
その「bin_search」とやらは何をする関数なんでしょうか?
ことと次第によっては「bin_searchでkeyを返したい」が既にはずれである可能性もあります.
この回答への補足
元は、ライブラリ関数のbsearchを自作しようというものでした。
仮引数もいくつかありましたが、最終的にはkey(と同じ構造体の配列)を返せればよいので、このような形にしました。
No.1
- 回答日時:
>return (key);
>などとりあえず試してはみたのですがどれも上手くいきません。
とありますが「return (key);」の場合「const*」を「*」に変えたというワーニングがでるだけで正しく動くと思いますが?どういった風に上手く行かなかったのでしょうか?
keyには構造体のアドレスが入っています、関数の返却値も同一構造体のアドレスです。そのままkeyを返せば良いだけです。
この回答への補足
「return (key);」の場合、
return discards qualifiers from pointer target type
という警告文が表示されました。
これが、そのワーニングにあたるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
アプリを32bitから64bit移行
-
C言語のポインタに直接アドレス...
-
ポインタについての良いテキス...
-
構造体宣言したポインタ変数に...
-
参照型で受け取った引数をポイ...
-
c言語で任意のファイルから読み...
-
プーさんのマウスポインタを教...
-
#define NULL ((void *)0) の弊害
-
fopne で失敗する原因
-
ハンドル、アドレス、ポインタ...
-
NULLポインタが0でない処理系と...
-
[C言語] NULLは必ず0(番地)です...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
c言語のポインタについて初心者...
-
セグメントエラー
-
NULLとブランクの違い
-
配列とポインタの違いについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
C言語のポインタに直接アドレス...
-
ExcelVBAでのkernel32(64bit)
-
Run-Time Check Failure #3とい...
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
ハンドルはポインタか
-
LPSTR型の初期化について
-
CWnd::EnableWindow()の扱い方
-
コンストラクタでnewを失敗した...
-
アプリを32bitから64bit移行
-
参照型で受け取った引数をポイ...
-
プーさんのマウスポインタを教...
-
c言語で任意のファイルから読み...
-
ポインタについて
-
リトルエンディアンというもの...
-
別のDLLのダイアログを・・・
-
基本アルゴリズムの『返す』の...
-
トリプルポインタが必須!とな...
おすすめ情報