A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
私も人に教えられる程知っている訳じゃ無いけれど、
次のようにしてコンパイルしたらエラーにならなかったから
あなたのやりたい事はこれじゃないかな。
short int *ibuf;
short int *ibuf_tmp[10];
ibuf_tmp[0]= ibuf;
No.4
- 回答日時:
C の中で閉じた話ならともかく, 「FORTRAN とやり取りしよう」というのであれば「FORTRAN でどのように引数を渡すのか」が分からないとお話にならないですね.
C の関数を呼び出すときに (配列に限らず) 引数がどうなるのか, お使いの FORTRAN 処理系の資料を漁って頑張って調べてください. その結果が出てくれば考えようはあります.
ちなみに ibuf_tmp[0] = ibuf は動かないような気がします>#3.
No.3
- 回答日時:
キャストされてませんけど、、、、
>3 ibuf_tmp=ibuf; ※←ここです
どこにキャストがあるんでしょうか?
わたしも何がやりたいのかさっぱりわかりません。なんでキャストする必要があるの? そのまま素直に代入すれば良いと思うけど。
ibuf_tmp[0] = ibuf でいいのでは?
No.2
- 回答日時:
「どうしてもうまくいきませんでした」ということなので, 「どのようにしてみたのか」を全部挙げてください.
そもそも「なんでこんなことをしたいのか」に興味がありますが.
この回答への補足
他の回答者さんからもご指摘ありましたようにこのキャストはよくないんですね。長くなりますがやりたいことを以下に記述します。
今、f2cを使ってできたソースをベースに修正を加えているところです。元々のソースは以下です。
/* Subroutine */ int cal_freq__(shortint *ibuf, shortint *nnn, shortint *
nzero_cross__)
{
/* System generated locals */
integer i__1;
/* Local variables */
static integer j;
static shortint ib, ic;
static integer isgna, isgnb;
/* Parameter adjustments */
--ibuf;
/* Function Body */
*nzero_cross__ = 0;
ic = 15;
isgna = 1;
if (ibuf[1] < 0) {
isgna = -1;
}
~~~~~以下略~~~~~
上記のibufをセグメントエラーで落ちないようにしたいというのが本来やりたかったことです。short int (*ibuf_tmp)[10];
というポインタにいれてしまえば警告でても動きました。
呼び出し側はフォートランです。
---呼び出し部分は↓です------------------------
integer*2 ibuf4(1000)
call cal_freq(ibuf4,nc_freq,ntcon)
-----------------------------------------------
shortint *ibuf は呼び出し側では配列です。
再度質問させてください。
そもそもの引数に
int cal_freq__(shortint *ibuf, shortint *nnn, shortint *
nzero_cross__)
と、shortint *ibufになっていることが問題あるということになるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語 ポインタ 配列 2 2022/06/02 17:29
- C言語・C++・C# 双方向リスト 1 2023/06/28 04:16
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- 飲食業・宿泊業・レジャー スナックを経営しております。私の前でお客様がキャストに「疑似恋愛の雰囲気だしてこないじゃん」「お店潰 2 2023/03/12 16:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++6.0 MFC ダイアログバーを...
-
C言語の関数と配列に関する質問
-
fopne で失敗する原因
-
C言語のポインタに直接アドレス...
-
基本アルゴリズムの『返す』の...
-
C言語: ポインタ
-
【なぜポインタを使うのか】
-
TCHAR文字列内の検索について
-
戻り値で構造体を返すことは可...
-
【VC++2005(CLR)】マルチスレッ...
-
メモリのアドレスからの値の取...
-
ポインタ変数の利用方法
-
VB.NET DLL【API関数(コールバ...
-
VBはCを混乱させる?
-
セグメントエラー
-
LPSTR型の初期化について
-
Windowプログラミング lParam...
-
関数の引数をvoid*でキャストする
-
CopyMemory()をmemcpy()に書き...
-
任意のアドレスの中身を参照し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
C言語の関数と配列に関する質問
-
Run-Time Check Failure #3とい...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
main(int argc,char **argv[])...
-
アプリを32bitから64bit移行
-
ハンドルはポインタか
-
連結リスト 要素の入れ替え
-
C言語でのconstを返す関数
-
Cで作成したDLL関数をVBから呼...
-
NULLとブランクの違い
-
エラーの意味
-
ハンドル、アドレス、ポインタ...
-
DLL<->VB間での受け渡し(文字...
-
【C言語】戻り値が構造体の関数
おすすめ情報