0

我的 Visual Studio 10 中有此代码(简化示例):

int myfunc(void)
{
    array <int^>^ temparr=gcnew array<int^>(11);

    for (int i=0; i<11; i++)
    {
         temparr[i]=0;
    }

    temparr[2]=1;  //one of the elements is 1


    for (int i=0; i<11; i++)
    {
         if (!temparr[i]) return 0;   
    }  

    return 1;
}

但是当我使用这个函数时,输出是 1 而不是 0。可能是什么问题以及如何更正这段代码?

4

3 回答 3

2

您的代码中有未定义的行为,您将整数值分配给垃圾收集的指针。为什么你甚至想要那个?而是声明temparr

array <int> temparr(11);

即正常整数值的数组。

于 2013-09-24T06:00:39.963 回答
2

您的代码没有按照您的想法执行。

不是将值分配给整数数组,而是将它们分配给指针数组......

一个简单的整数数组将解决您的问题:

array <int> temparr(11);
//    ^^^^^        ^^^^         
于 2013-09-24T06:05:19.023 回答
0

值类型的数组(int此处)应如下所示:

array<int>^ temparr = gcnew array<int>(11);

http://msdn.microsoft.com/en-us/library/vstudio/dtbydz1t%28v=vs.100%29.aspx

于 2013-09-24T06:44:32.300 回答