http://zju.acmclub.com/index.php?app=problem_title&id=1&problem_id=1971
注意:
数组作为参数传递给函数F()时,可以在F中不指定数组内元素个数(F(char dst[],char src[]))的原因就在于:
编译函数时设置成函数接收的是数组的首地址,而不是一个具有实际元素个数的数组,
所以也不会进行边界检查。
cpp代码:
#include<iostream> #include<cstring> #define SIZE 20 using namespace std; char *MyStrcat(char dstStr[],char srcStr[]){ /*c编译MyStrcat时是令函数接受数组dstStr的首地址 并不生成具有n个元素的数组dstStr,也不进行下标边界检查*/ int len1=strlen(dstStr); int len2=strlen(srcStr); for(int i=0;i<len2;i++){ dstStr[len1+i]=srcStr[i]; } dstStr[len1+len2]='\0'; return dstStr; } int main(){ char str1[SIZE],str2[SIZE]; while(cin>>str1>>str2){ cout<<MyStrcat(str1,str2)<<endl; } return 0; }
原文:http://blog.csdn.net/messiandzcy/article/details/41082095