重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
strcpy(char a*, char b*)的作用,简单讲就是给你两个内存起始地址(你可以将它们想象成给了你两排箱子,每个箱子都有编号,比如第一排的编号是0,1,2,3,4,第二排的编号是7,8,9,则a,b分别就是这两排箱子的起始编号),将以b开始的内存地址中的数据复制到以a开始的内存地址中(就是将箱子7中的东西复制到箱子0,将箱子8中的东西复制到箱子1,...)。因为a要容纳b的所有数据,所以分配给a的内存数量必须大于等于分配给b的内存数量(大于意味着a的内存没装满,有富余空间),即第一排箱子的数量要大于第二排的。
成都网站建设、网站设计的关注点不是能为您做些什么网站,而是怎么做网站,有没有做好网站,给成都创新互联公司一个展示的机会来证明自己,这并不会花费您太多时间,或许会给您带来新的灵感和惊喜。面向用户友好,注重用户体验,一切以用户为中心。
具体到你的问题,箱子的数量就是分配给数组或字符指针的内存字节数。str1和str4都分配了9个字节,因为把字符串分配给char数组(数组的大小没由你显式指定时才这样)或char指针时,会比字符串的实际长度多分配1个字节,以容纳'\0'字符,str2是8个字节(8是显式指定的),而str3一个字节也没分配,所以不能把"HELL03"复制给str3,因为要装下"HELL03",需要至少7个字节('\0'也要一个字节)。
#includestdio.h
int main()
{
void copy(char *from,char *to);
char a[81]; //源串数组
char b[81]; //目标串数组,此数组要保证不小于源串,不然,数据会产生越界问题
printf("input a string:" );
gets(a); //输入一个字符串数据,如:hello,world
copy(a,b);
printf("%s\n",b);
return 0;
}
void copy(char *from,char *to)
{
for(;*from!='\0';from++,to++)
{
*to=*from;
}
*to='\0';
}
直接对指针进行赋值即可实现把一个指针的内容复制到另一个指针。
下面举例来说明具体的操作过程:
int *p1=(int *)malloc(sizeof(int)); // 定义一个int类型的指针变量p1,并分配存储单元
int *p2; // 定义一个int类型的指针变量p1,没有分配存储单元
*p1 = 4; // 对指针p1指向的存储单元赋值
p2 = p1; // 将指针p2也指向指针p1指向的存储单元,即*p2=4
printf("%d", *p2); // 输出4