此C++代码如何c#实现

图呐 2007-12-20 03:07:53
struct Node
{
public int nType; //节点自由度类型
public double dX;
public double dY; //节点的X,Y坐标值
public int[] naDOFIndex; //节点的X向,Y向及转角向位移编号
}


int main(void)
{
int nTotalNode;
Node * pNode = new Node[nTotalNode]; //一直看不懂这句什么意思,能否解释一下?我估计是创建一个pNode的数组指针变量?!
int void XX(int nTotalNode, Node * pNode) //xx函数
{
int i,j;
for(i=0;i< nTotalNode;i++)
for(j=0;j<3;j++)
(pNode+i) ->naDOFIndex[j]=0; //关键就在这里,我看得明白,理解得通,貌似这里的意思是要批量创建局部变量,可惜在C#一直实现不了,不知各位高手有什么变通的法子。如果我不想用指针,这种批量创建怎么实现?!
}
delete[]pNode
...全文
105 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
图呐 2007-12-21
  • 打赏
  • 举报
回复
试验了一下,成功,再次感谢,可否帮忙解答一下如下问题?谢谢……
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
public class Node
{
public int nType;
public double dX;
public double dY;
public int[] naDOFIndex;
public Node(int num) //构造函数?!还是什么!?因该是吧,为什么我不能直接定义成 public int[] naDOFIndex = new int[3];?
{
naDOFIndex = new int[num];
}
}

class Program
{
static void Main(string[] args)
{
int i, j;
int nTotalNode = 6;
Node[] aNode = new Node [nTotalNode];
for (i = 0; i < nTotalNode; i++)
{
aNode[i] = new Node(3);
for (j = 0; j < 3; j++)
{
aNode[i].naDOFIndex[j] = 6;
}
}
Console.WriteLine("{0},{1},{2}", aNode[1].naDOFIndex[0], aNode[2].naDOFIndex[1], aNode[3].naDOFIndex[2]);
Console.ReadKey();
}
}
}
图呐 2007-12-21
  • 打赏
  • 举报
回复
万分感谢,试验中,
LyricSean 2007-12-20
  • 打赏
  • 举报
回复
XX(nTotalNode,ref pNode); 不好意思。ref 去掉
LyricSean 2007-12-20
  • 打赏
  • 举报
回复
class Node
{
public int nType; //节点自由度类型
public double dX;
public double dY; //节点的X,Y坐标值
public int[] naDOFIndex; //节点的X向,Y向及转角向位移编号
public Node(int num)
{
naDOFIndex = new int[num];
}
}



static int XX(int nTotalNode,Node[] pNode) //xx函数
{
int i, j;
for (i = 0; i < nTotalNode; i++)
{
pNode[i] = new Node(3);
for (j = 0; j < 3; j++)
{
pNode[i].naDOFIndex[j] = 0;
}
}
}
static void Main(string[] args)
{
int nTotalNode=10;
Node[] pNode = new Node[nTotalNode];
XX(nTotalNode,ref pNode);
}
图呐 2007-12-20
  • 打赏
  • 举报
回复
求教求教…………
图呐 2007-12-20
  • 打赏
  • 举报
回复
恩恩,谢谢
其实运行哪里改一下,添加关键字unsafe就可以用指针了,问题在于用法变得和c++不一样,
另外,按照书上的说法 classname 变量名 = new classname()等于调用一个指针了,但问题为什么 变量名[].成员变量[]无法使用?!
还有,我翻遍书,都没提到 classname 变量名 = new classname[]这里可以声明成一个数组?并以变量名[]的方式实现……正是一头雾水
blueiv 2007-12-20
  • 打赏
  • 举报
回复
Node * pNode = new Node[nTotalNode];
C#里应该不能这么写,*是代表指针的,可C#里没有……
图呐 2007-12-20
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include "iostream"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}

void main()
{
struct Node
{
public:
int nType; //节点自由度类型
double dX;
double dY; //节点的X,Y坐标值
int naDOFIndex[3]; //节点的X向,Y向及转角向位移编号
};


int i,j,k;
int g; //总自由度数
Node * aNode = new Node[6];
for(i=0;i<6;i++)
for (j = 0; j < 3; j++)
{
(aNode+i)->naDOFIndex[j] =0 ; //傻眼了,这是c++下的代码,刚刚试验了一下,编译没问题,为什么到了c#!!!!!!…………
};
}
图呐 2007-12-20
  • 打赏
  • 举报
回复
int nTotalNode = 6;
Node * pNode = new Node[nTotalNode];
//Node aNode = new Node[nTotalNode]; //我用这两种方法,系统都报错,郁闷,请问哪里出问题了?
for(i=0;i<6;i++)
for (j = 0; j < 3; j++)
{
aNode[i].naDOFIndex[j] =0 ; //
}
图呐 2007-12-20
  • 打赏
  • 举报
回复
万分感谢^^
waterine 2007-12-20
  • 打赏
  • 举报
回复
不是创建,只是赋值,这句话在C++中和pNode[i]->naDOFIndex[j]=0是等价的。所以在C#里也只需要用node[i].naDOFIndex[j]=0就可以了。
图呐 2007-12-20
  • 打赏
  • 举报
回复
求教求教^^^

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧