现在的位置: 首页 > 综合 > 正文

字符串拷贝

2014年01月04日 ⁄ 综合 ⁄ 共 462字 ⁄ 字号 评论关闭

 void test(char * str1)
{
 char string[1];
 strcpy(string, str1);
 cout << string << endl;
}
int main(int argc, char* argv[])
{
 test("abc");
 return 0;
}

申请的string字符数组虽然只有1个字节,但是由于编译器的内存对齐原则,他会补上到4个字节,向内存申请4个字节。这样运行上面程序,str1是'a','b','c','/0',正好4个字节,即可以编译通过,并运行。

如果str1是test("abcde"),这样str1是'a','b','c','d','e','/0',这样的话,可以通过编译,但是会产生运行期错误。我们就可以string[5]或者string[6],string[7],string[8]就都可以了

注意:如果用strcpy函数,必须是字符串,即字符数组最后一位是'/0',如果这样str1={'a','b','c','d'};strcpy(string,str1);这样是错误的,编译都不能通过。

抱歉!评论已关闭.