C言語の関数で配列をパラメータとして渡すと、配列のコピーが作成されます。それは実際に元の配列に変更を加えますか?私は数字をバイナリ形式に変換する小さなプログラムをここに持っています。たとえば、数値が15の場合、バイナリ形式は1111になります。C:配列のコピーを作成する関数に渡される配列または元の配列を変更する配列
void convertToBinary(int base10, int result, char *binaryResult){
int binaryVals[8] = {1,2,4,8,16,32,64,128};
if(base10 == 0){
printf("Binary Result %s", binaryResult);
}
else{
int max = 0;
for(int i = 0; i < 8; i++){
if(binaryVals[i] <= base10){
binaryResult[i] = '0';
}
else{
max = binaryVals[i-1];
binaryResult[i-1] = '1';
result = base10-max;
printf("Result %d", result);
break;
//convertToBinary(result,0, binaryResult);
}
}
}
}
int main(void){
char binaryResult[8];
convertToBinary(15,0,binaryResult);
}
再帰部分が失敗しています。なぜ私は分からない。私はそれが再帰を実行するたびに配列のコピーを作成しているからだと思う。しかし、私はどのようにそれを修正するか分からない。
これは役に立ちますか? http://stackoverflow.com/a/1106977/4511978 –
http://www.c-faq.com/aryptr/aryptrequiv.html – jamesdlin
配列にパラメータを渡すと、配列のコピーが作成されていますしかし、私は元の配列をどのように変更できるかをまだ完全に理解していません。私はまだmallocのものとそれをどのように適用するのか混乱しています。 –