问题:
执行函数case2时在22行出现异常:读取访问权限冲突,如下图
代码段
#include <stdio.h>
#include <stdlib.h>
int case1(int a[], int length)
{
int res = 0;
for (int i = 0;i < length;i++)
{
res ^= a[i];
}
return res;
}
int case2(int arr[], int length, int res[])
{
int xorRes = case1(arr, length);
int divider = xorRes & -xorRes;
int heap1[102] = { 0 };
int heap2[102] = { 0 };
int length1=0, length2=0;
for (int i = 0;i < length;++i)
{
if (arr[i] & divider)
{
heap1[length++] = arr[i];
}
else
{
heap2[length++ ] = arr[i];
}
}
res[0] = case1(heap1, length1);
res[1] = case1(heap2, length2);
return res;
}
int main()
{
int arr[101];
for (int i = 0;i < 101;i++)
{
arr[i] = i / 2;
}
int res=case1(arr, 101);
printf("the special number is %d", res);
int arr2[102];
for (int i = 0;i < 101;i++)
{
arr2[i] = i / 2;
}
arr2[101] = 51;
int res2[2] = { 0 };
case2(arr2, 102,res2);
printf("the two special number is %d %d", res2[0],res2[1]);
}
分析?
数组传值不对,修改为对应的length1和2
重新运行