【发布时间】:2017-02-01 23:19:14
【问题描述】:
当我将数组作为 C 函数中的参数传递时,它是创建数组的副本还是实际上对原始数组进行了更改?我在这里有一个小程序,可以将数字转换为二进制形式。例如,如果数字是 15,则二进制形式为 1111。
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);
}
递归部分让我失望了。我不确定为什么。我怀疑这是因为它每次运行递归时都会创建数组的副本。但我不知道如何解决这个问题。如果有人能帮忙就太好了,谢谢
【问题讨论】:
-
所以如果我将一个数组传递给一个参数,它正在制作一个数组的副本,但我仍然不完全明白如何修改原始数组。我仍然对 malloc 的东西以及如何应用它感到困惑。
-
@J_LIU 呃,你显然误解了这两个链接。数组永远不会被复制。从您的函数签名中可以看出,它将数组作为 pointer 指向其第一个元素。
-
C不支持artsy类型的参数。
标签: c