【发布时间】:2019-09-28 16:15:28
【问题描述】:
我遇到了一个问题,代码是 -
int* plusOne(int* A, int n1)
{
int i=1;
while((A[n1-i]+1==10)&&(i<n1))
{
A[n1-i]=0;
i++;
}
A[n1-i]++;
for(i=0;i<n1;i++)
{
printf("%d",A[i]);
}
}
直到后来我才读到他们希望我通过使用 return 语句来提供输出。 我搜索了解决方案,并在 Stack Overflow 上找到了 Returning an array using C,但我无法理解 - 请帮助。
【问题讨论】:
-
我假设你正在做一些编码挑战,要求制作一个函数。简而言之,他们说他们将处理打印数组,您所做的是,制作所需的函数并从中返回该数组。简而言之,您不需要那个 for 循环。只需将完整的循环替换为
return A;。此外,无论您在哪里声明A,要么将其设为static int A[SIZE],要么使用malloc()为其分配内存 -
@Mihir :
A[]可以作为参数传递 - 代码不完整,所以我们无法判断。这将是比此函数中的静态或malloc()更好的解决方案,这将分别乞求重入和内存泄漏问题 - 这是不明智的.. -
@Mihir — 当我去编辑问题时,我“发现”函数的第一行隐藏在与三次反引号相同的行上。我认为这会严重影响您的 cmets 的相关性。
-
@JonathanLeffler :从Jeff Attwood's rant on this subject 10 年后仍未解决! ;-)
-
@JonathanLeffler 他们提到“不要打印输出,而是返回值”