私は元の親関数の配列(浮動小数点数)を変更する関数を持っています。 Word
はtypedefは構造体であるとWord.data
は(動的)float配列であるC - 参照で配列を渡す - 最初の要素セットのみ
void sortFunction(Word**words, int wordCount){ //to sure if two * are correct (pointer to an array..?)
int i = 0;
for(i=0;i<wordCount-1;i++){
Word first = *words[i]; //values fine
Word second = *words[i+1]; //weird values, causes segfault
if(first.data[0] > second.data[0]){
//do stuff
}
}
}
int main(int argc, char ** argv){
Word* words = NULL;
int wordsCount = ...
//filling the array in a loop and using realloc for memory allocation
//Here, the array is filled correctly (verified)
sortFunction(&words, wordsCount);
}
:私は、次のコードを使用しています。親関数をチェックインすると、配列が割り当てられ、値が正しく設定されます。
私は配列内の約10個の要素で試しましたが、最初の要素([0])のみがsortFunction()
で正常で、2番目の要素がすべて乱されています。構造体にint
のプロパティもあります.2番目の要素を印刷しようとすると、10億を超える何かが得られます。
私は配列を正しく渡していないと仮定します。私は次のコード(サンプルのみ)を使用して通常の変数を渡すため、配列に対しては修正しようとしましたが、明らかに正しくありません。配列に対してこれを行う正しい方法は何ですか?
void foo(int*var){
*var=8;
}
int main(){
int var = 5;
changeVar(&var);
}
ご協力いただきありがとうございます!
読み取り[この演算子の優先順位表](http://en.cppreference.com/w/c/language/operator_precedence)とその問題は明らかです。 –
@Someprogrammerdude悲しいことではない:/私は(私が前に思ったように) 'Word ** words'の部分と関係があると思いますか? –
いいえ、その部分ではなく、 '* words [i]'部分です。コンパイラは '*(words [i])'と誤った扱いをします。 –