非数组的指针--这个题目没什么含义?
在C语言中,字符串常量代表了一块包括字符串中所有字符以及一个空字符('\0')的内存地址。
char *r;
strcpy(r,s);
strcat(r,t);
//错误一:未初始化指针,不能确定r指向何处。
//解决方法:不仅要让r指向一个地址,而且r所指向的地址还应该有内存空间可供容纳的字符串,
//这个内存空间应该是以某种方式已经被分配了的。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
char r[100];
strcpy(r,s);
strcat(r,t);
//错误二:不能确保 r 的空间足够大。
//解决方法:C语言实现为我们提供了一个库函数malloc,该函数接受一个整数,然后分配能够容纳同样的数目的字符的一块内存。
//还提供了一个库函数strlen,该函数返回一个字符串中所包括的字符串中所包括的字符数。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
char *r,*malloc();
r=malloc(strlen(s)+strlen(t));
strcpy(r,s);
strcat(r,t);
//错误三:malloc函数有可能无法提供请求的内存,
//解决方法:这种情况下malloc函数会通过返回一个空指针来作为"内存分配失败"事件的信号。
//错误四:给r分配的内存在使用完之后应该及时释放
//解决方法:函数free(r);
//错误五:调用malloc函数时并未分配足够的内存。
//如果strlen(s)的值是n;那么字符串实际需要n+1个字符的空间。
char *r,*malloc();
r=malloc(strlen(s)+strlen(t))+1);
if(!r)
{
complain();
exit(1);
}
strcpy(r,s);
strcat(r,t);
//一段时间再使用
free(r);
//笔记摘自《C陷阱和缺陷》