char *begin = "aaaaa";
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标准中又把它规定为可选实现的功能了。
参考资料来源:百度百科-数组
那么我的那个问什么不对呢?提示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";貌似定义的是字符常量