【发布时间】:2013-03-28 10:06:08
【问题描述】:
我遇到了一个问题,而且我肯定做错了什么。 我需要调用一个函数,该函数返回一个指向 int 数组的指针,但是当它返回后,数组中的值是错误的,并且某些值丢失了。
int* patternForFirstDigit(int digit) {
int *pattern;
pattern = (int [6]){1,1,1,1,1,1};
switch (digit) {
case 0:
pattern = (int [6]){1,1,1,1,1,1};
break;
case 1:
pattern = (int [6]){1,1,2,1,2,2};
break;
default:
pattern = (int [6]){0,0,0,0,0,0};
break;
}
for (int i = 0; i < 6; i++) {
printf("%i\n", pattern[i]);
}
return pattern;
}
如果 digit = 1,这里是打印的内容
1, 1, 2, 1, 2, 2
但返回后
int *pattern = patternForFirstDigit(0);
for (int i = 0; i < 6; i++) {
printf("%i\n", pattern[i]);
}
这是打印的内容
1, -1405451528, -1405449120, 366001
你知道出了什么问题吗?
谢谢大家
PS:我使用的是 Xcode 4.6,我的项目使用的是 ARC,但我很确定这不是我的问题的原因。
【问题讨论】:
-
您正在返回一个指向临时数组的指针。
-
在 SO 上每天会被询问大约 20 次相同的“常见问题解答”。希望有办法阻止它。
标签: c arrays pointers memory-management int