【发布时间】:2017-10-28 09:36:11
【问题描述】:
int* dividers_of(int x, int ammount){
int i,j = 1;
int* dividers = (int*)calloc(ammount,sizeof(int)); /* calloc initializes int array to 0!*/
for(i=0;i<ammount;i++){
while( (x%j) != 0){
j++;
}
*(dividers+i) = j;
/*DOESNT WORK ( int* dividers stays on 0-0-0)
*dividers = j;
dividers++; */
j++;
}
return dividers;
}
我试图找出不起作用的代码有什么问题,我将int j 分配给*dividers,然后使dividers 指向其数组中的下一个int。结果应该是一个指向数组的指针,该数组包含int x 的int 分隔符。
不幸的是,如果我这样做,结果是以下数组:
dividers[] = {0,0,0};
这意味着自从calloc 像这样填充数组以来没有任何变化。
发生了什么
*dividers = j;
dividers++;
?
【问题讨论】:
-
拼写为
amount,而不是ammount。 -
1/ 我们无法重现该问题。这是新手的常见问题,因此请阅读本网站帮助中心内的常见问题解答以了解如何编写以允许其他人重现(并因此尝试)该问题的方式提出问题。我已经完成了直接链接到该部分的操作。如果我们要谈论礼貌,您应该在发布之前阅读整个部分。像这样无视社区标准有点粗鲁。
-
您能否添加一些示例来说明您的函数的预期结果?
-
*(dividers+i)与dividers[i]相同。无需增加指针。
标签: c arrays pointers memory-management