请问一下VC中数组变量怎么赋值的.

来源:百度知道 编辑:UC知道 时间:2024/06/21 18:46:32
用例子来说明吧.
BYTE A[] ={0};
BYTE B[] =
"\x00"
"\x11"
"\x22"
"\x33";

现在我要把B赋值给A应该怎么做.?
VC里面不能使用像VB那样的A=B这种直接等.. 所以不清楚怎么办,帮帮忙..

1.有2中方式,第一种
int b[] = {1, 2, 3};
int a[] = {0};

for(int i = 0; i< 3; i++)
{
a[i] = b[i];
cout<<a[i];
}
第二种
memcpy(a,b,sizoef(b));

但是无论那一种都有可能会越界,因为a的空间装不下b的内容

例子
int b[] = {1, 2, 3};
int a[] = {0};

for(int i = 0; i< 3; i++)
{
a[i] = b[i];
cout<<a[i];
}

for(i = 0; i< 3; i++)
{

cout<<b[i];
}

在vc中如果用指针来表示两个数组,可以直接a=b
其实在VB中,这些变量都是指针,只不过在VB环境下由于VB的高级,它会让你觉得那不是指针,VB的运行库中有一个SecurityCheck函数,当VB编译器编译Basic代码时,它会把所有变量先进行安全检查,然后翻译成指针,然后再编译成伪代码!
对应的在VC中,由于没有SecurityCheck过程,所以指针变量和其他变量是不同的!
如果
char a[100],b[100];
要执行a=b
则要
memcpy(a,b,sizeof(a));
或者循环a[i]=b[i]

A=B这样的操作是可以的,数组的实质是指针,这样的操作是将b的地址赋值给了a,但是需要注意的是a的长度要大于等于b,否则会有异常,概率很小但不推荐这样做。例如你所举的例子中a的长度在定义时就赋值成1了而b的长度是4,这样只能将b中的第一个数据放到a中而后面的数据就有可能丢失。

在VC中除了是字符串或字符数组,其它类形不能把数组B直接赋值给数组A,只能对其中对应的元素逐个赋值!