ポインタ配列の受け渡しがうまくいきません.
組み込み用(stm32)のプログラムを書いていて,一部コードを取り出してテストをしています.
以下のコード単体でテストをすると,意図した通り,321.500000,318.500000と出力されます.しかし,実際の組み込みの方ではfloat *motorval = pid(gyro);
のところでうまく値が渡っていません.デバッガーで調べると値が受け渡されたとき,
motorval
はfloat*型で0x0を示し,*motorval
は1.12655382e-019を示しました.
#include <stdio.h> #include <math.h> float *pid(float arg); int main(void) { float gyro= 320; float *motorval = pid(gyro); printf("%f,%f", motorval[0],motorval[1]); return 0; } float *pid(float arg) { static float motor[2]; motor[0] = arg+1.5; motor[1] = arg-1.5; return motor; }
サイトによってはfloat *motorval = pid(gyro);
と初期化するのはまずいとあり,別の方法も模索しましたがわかりませんでした.ご教授いただけたら幸いです.
回答3件
あなたの回答
tips
プレビュー