【发布时间】:2015-06-20 00:44:04
【问题描述】:
我创建了一个脚本来添加两个数组,如下所示。当执行下面的代码时,它不会产生一致的结果。每次执行脚本时,我都会收到不同的答案。我很想知道造成这种结果的原因是什么。
//
// main.c
#include <stdio.h>
#include <unistd.h>
int *AddArrays(int *A, int *B, int a, int b);
int main(void)
{
int A[5] = {1,2,3,4,5};
int B[7] = {6,7,8,9,10,11,12};
int a = 5;
int b = 7;
int c = a + b;
int x = 0;
int NewArray[c], *ArrayPtr;
ArrayPtr = AddArrays(A,B,a,b);
for( x = 0; x < c; x++)
{
*(NewArray + x) = *ArrayPtr;
printf("Value of NewArray[%d] = %d\n", x, *(NewArray+x));
sleep(1);
ArrayPtr++;
}
return 0;
}
int *AddArrays(int *A, int *B, int a, int b)
{
int c;
int d;
int NewArray[a+b];
for (c = 0; c < a; c++)
{
NewArray[c] = *A;
A++;
}
for (d = 0; c < d; d++)
{
NewArray[a] = *B;
a++;
B++;
}
return NewArray;
}
【问题讨论】:
-
当您在调试器中运行此代码时发现了什么?
-
它构建成功,但输出没有打印附加了“B”的数组“A”。相反,它会打印“1”、“2”,然后是随机数,然后是最后一个数组单元格值的“0”。
-
那不是调试器的输出。另请注意,这不是比赛。 奖金问题没有“必要”。 (如果你认为类型实际上是“奇怪的”,你应该重新阅读关于类型的章节和关于编程范式的章节。
-
调试器不应给出“错误消息”。注意:要对另一位发帖人发表评论,请使用众所周知的语法
@name。"不会通知该收件人。这不是教程网站,而是问答论坛。 -
我有一个问题。有人给了我答案。