C#代码向C++迁移(一)数组类型

C#代码向C++迁移(一)数组类型,第1张

C#代码向C++迁移(一)数组类型 1. C# []数组 = 符号赋值 1.1 值类型数组赋值 数组 = *** 作符赋值
 byte[] a = { 1, 2, 3 };
 byte[] b = { 11,22,33};
 a = b;
 a[1] = 111;
 Console.WriteLine("输出值:"+b[1].ToString());

返回值为111 即C#中, = *** 作符 进行的是指针赋值 a和b为数组a和b的首地址。

数组成员 = *** 作符赋值
byte[] a = { 1, 2, 3 };
byte[] b = { 11,22,33};
a[1] = b[1];
a[1] = 111;
Console.WriteLine("输出值:"+b[1].ToString());

返回值为 22,值类型数组的成员赋值时赋的是数值而非指针。

1.2 引用类型数组赋值

首先定义一个数据类myint

class myint { public byte b; }
数组 = *** 作符赋值
myint[] aa = { new myint() { b = 1 }, new myint() { b = 2 }, new myint() { b = 3 } };
myint[] bb = { new myint() { b = 11 }, new myint() { b = 22 }, new myint() { b = 33 } };
aa = bb;
aa[1].b = 111;
Console.WriteLine("输出值:" + bb[1].b.ToString());

返回值仍为111,即class的数组也是传递的地址。

数组成员 = *** 作符赋值
myint[] aa = { new myint() { b = 1 }, new myint() { b = 2 }, new myint() { b = 3 } };
myint[] bb = { new myint() { b = 11 }, new myint() { b = 22 }, new myint() { b = 33 } };
aa[1] = bb[1];
aa[1].b = 111;
Console.WriteLine("输出值:" + bb[1].b.ToString());

返回值还是111,证明在class的数组的每一个item中,= *** 作符赋值传递的是myint类的引用(地址指针)。

2.C++ []数组 = 符号赋值 原生数组
int a1[]= {1,2,3};
int b1[]= {11,22,33};
a1 = b1;

编译器提示异常 error: array type ‘int [3]’ is not assignable。
C++的原生数组是不支持 = *** 作符的。

QT QVector数组
QVector a1= {1,2,3};
QVector b1= {11,22,33};
a1 = b1;
b1[1] = 111;
qDebug()< 

返回值 22,后续对b1数组成员的修改没有影响a1的数组成员。

QVector a1= {1,2,3};
QVector b1= {11,22,33};
a1[1] = b1[1];
b1[1] = 111;
qDebug()< 

返回值 22,数组成员的 = *** 作符赋值也是传递的值。

在C++中也构建一个myint类

class myint
{
public:
    myint(quint8 q)
    {
        q1 = q;
    };
    quint8 q1;
};
QVector a1;
a1.append(new myint(1));
a1.append(new myint(2));
a1.append(new myint(3));
QVector b1 = {new myint(11),new myint(22),new myint(33)};
a1 = b1;
b1[1] = new myint(111);
qDebug() 

返回 22

QVector a1;
a1.append(new myint(1));
a1.append(new myint(2));
a1.append(new myint(3));
QVector b1 = {new myint(11),new myint(22),new myint(33)};
a1 = b1;
b1[1]->q1 = 111;
qDebug() 

返回 111

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5635442.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存