c++ 如何把一个数组的值赋到另一个数组
char *end = "bbbbb";
int m = 4;
for(int i=0; i<m; i++){
end[i]=begin[i];
printf("%c ",end[i]);
}
为什么总提示我 ACCESS VIOLATION? 什么意思撒 展开
有两种方法可以实现。
为方便说明,定义两个整型数组a,b,并实现将a中的值赋值到b中。
int a[4] = {1,2,3,4}, b[4];
1、 通过数组遍历,逐个赋值。
定义循环变量int i;
for(i = 0; i < 4; i ++)
b[i] = a[i];
该程序功能为遍历数组a,逐个赋值到数组b对应元素中。
2、 借助内存复制函数memcpy,整体赋值。
void *memcpy(void *dst, void *src, size_t size);
这个函数的功能为将src上,大小为size字节的数据赋值到dst上。
调用该函数时需要引用头文件cstring,即
#include <cstring>
赋值数组的代码为
memcpy(b,a,sizeof(a));
扩展资料:
在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
关于可变长数组(VLA)的问题:原来的C89标准中是不允许可变长数组出现的,但是在C99标准中,加入了对VLA的支持,但是支持的编译器不多,而且由于栈溢出的安全问题,没有太多的人敢用这个可变长数组,所以在C11标准中又把它规定为可选实现的功能了。
参考资料来源:百度百科-数组
strcat函数是有两个字符数组的参数,函数的作用是:将第二个字符数组中的字符串连接到前面字符数组的字符串的后面,第二个字符数组被指定为const,以保证该数组中的内容不会在函数调用期间修改。 连接后的字符串放在第一个字符数组中,函数调用后得 到的函数值,就是第一个字符数组的地址。 C++字符串复制函数strcpy 函数原型为
在应用数组的时候,我们往往需要要把数组的值由一个数组传递给另外一个数组,就如同变量的传递一样:
A=B ’把B值赋给A
C=A ’把A值赋给C
如上例,就完成了把值的传递的过程,分别把B的值传递给了A;把A的值传递了B,那么数组是否也可以呢?我们看下面的数组传递:
下面看我给出的代码:
Sub MyNZsz_34() '第34讲 如何把一个固定数组的值传递给另外一个数组
'直接赋值是不对的
Sheets("34").Select
Dim arr1(1) As Integer '定义一个一维固定数组arr1(1)
Dim arr2(1) As Integer '定义一个一维固定数组arr2(1)
arr1(0) = 1 '给arr1(1) 的数组元素0赋值为1
arr1(1) = 2 '给arr1(1) 的数组元素0赋值为2
arr2 = arr1 '讲数组1传递给数组2
MsgBox (arr2(1)) '提示数组2的元素1的值
End Sub
上述代码的过程要完成的是首先定义两个一维数组arr1(1)和 arr2(1);然后先给其中的一个数组arr1(1)赋值,这个数组共用两个元素分别赋值为1,2;然后我们用普通变量赋值的方法把数组arr1(1)赋值给arr2(1);最后提示数组2的元素1的值,那么是否会弹出对话框提示为1呢
为方便说明,定义两个整型数组a,b,并实现将a中的值赋值到b中。
int a[4] = {1,2,3,4}, b[4];
1、 通过数组遍历,逐个赋值。
定义循环变量int i;
for(i = 0; i < 4; i ++)
b[i] = a[i];
该程序功能为遍历数组a,逐个赋值到数组b对应元素中。
2、 借助内存复制函数memcpy,整体赋值。
void *memcpy(void *dst, void *src, size_t size);
这个函数的功能为将src上,大小为size字节的数据赋值到dst上。
调用该函数时需要引用头文件cstring,即
#include <cstring>
赋值数组的代码为
memcpy(b,a,sizeof(a));
#include<iostream>
using namespace std;
int main(){
int a[10],b[10];
for(int i=0;i<10;i++){
cin>>a[i]; //输入a[i]
b[i]=a[i];} //把a[i]的值赋给b[i]
for(int j=0;j<10;j++){
cout<<a[i]<<" "<<b[j]<<endl;} //输出两个数组
return 0;}
对于多数的数组是需要将每个元素一一赋给另一个数组,对于字符数组只需将第一个元素的地址赋给另一个数组即可:
#include<iostream>
using namespace std;
int main(){
char a[10],b[10];
cin>>a;
b=a; //将a的地址赋给b
cout<<b<<endl;
return 0;}
那么我的那个问什么不对呢?提示access violation
这样改就可以了:
#include
using namespace std;
int main(){
char begin[6] = "aaaaa";
char end[6]= "bbbbb";
for(int i=0; i
using namespace std;
int main(){
char*begin = "aaaaa";
char *end= "bbbbb";
end=begin;
for(int i=0; i<4; i++){
printf("%c",end[i]);} //输出结果aaaa
printf("\n");
system("pause");}
还有 char*begin = "aaaaa";char *end= "bbbbb";貌似定义的是字符常量
广告 您可能关注的内容 |