返回值++/CLI始终为1
问题描述:
我在我的Visual Studio 10得到这个代码(简化的例子):返回值++/CLI始终为1
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.什么是问题以及如何纠正这些代码?
答
的数值数组式(int
这里)应该是这样的:
array<int>^ temparr = gcnew array<int>(11);
http://msdn.microsoft.com/en-us/library/vstudio/dtbydz1t%28v=vs.100%29.aspx
答
您的代码中存在未定义的行为,您将整数值分配给垃圾回收指针。你为什么要这么做?取而代之的是将temparr
设为
array <int> temparr(11);
即,一个正常整数值的数组。
答
你的代码不会做你认为它的作用。
而不是整数数组分配值的,你是它们分配给的pointers数组...
整数的简单数组将解决你的问题:
array <int> temparr(11);
// ^^^^^ ^^^^
+0
感谢您的回答!但声明这样的数组后发生错误:错误C3149:(type):不能在没有*(char)的情况下使用此类型。 而且毕竟我有一个托管代码托管数组。它需要比较两个数组 - 托管和非托管。可能吗? – user2809652
仅供参考,“^”(帽)表示托管句柄(即,垃圾收集对象)。 –