|
举个例子吧
char *test1 = "abcdeasdf";
char *test2 = "abcdefghdgfhfgh";
char *test3 = (char *)malloc(sizeof(char*));
char *temp = test3;
int i = strlen(test1);
//先用循环把test1的值放到test3中
while((i--)>=0){
*temp++ = *test1++;
}
//最后加上结束符,也可以不加,其实上面已经在循环中加了,这里只是让读者明白一点
*temp++ = '\0';
//上面做的都是对内存初始化的工作,现在你才可以使用strcat
strcat(test3,test2);当然,使用数组是最好的,因为你不需要自己进行初始化,但是如果你还是想用malloc,那就得做上面的工作了,
还有必要说明一下malloc这个函数,他是申请指定大小的内存并返回这写内存的首地址,上面可以看到我只申请了4位大小的内存,为什么可以装下那么多数据?
因为我们使用的时候有越界的操作了,如我们对从首地址起4位大小后还继续进行赋值并设置自己的结束符,这些都是在不安全的内存内进行的,
所以有必要明白一点的是malloc分配内存的意义就是所这些指定大小的内存可以供你使用而且安全,不会有其他程序等对它进行修改,所以我上面只用malloc(4)的情况下,从首地址起4位内才是安全的,4位后的内存有可能被其他程序等使用或者冲突,所以规范的写法应该是malloc(strlen(test1)+strlen(test2)+1);
[ 本帖最后由 mythxhg 于 2008-3-25 15:03 编辑 ] |
|