编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:    Password: 
  登记 登记    
 操作员重载
指数 -> 编程,C. -> C帮助
查看上一个主题 可打印的版本下载主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
abcdefghijklmnopqrstuvwxy.




 邮政 发布: 2007年7月30日星期一8:30  帖子主题:操作员重载

这有什么问题?

代码:

#包括<stdlib.h>

CHAR *运营商+(char* one, char* two) {
  strcat(one, two);
  return one;
}

int main () {
  char* one = "You";
  char* two = "Suck";
  printf(one+two);
}
赞助
赞助
 赞助
 赞助
Rizzix.




 邮政 发布: 星期二2007年7月31日1:11  帖子主题:RE:操作员重载

C没有操作员重载。我认为你用C ++混合了C.
abcdefghijklmnopqrstuvwxy.




 邮政 发布: 星期二2007年7月31日2:31  帖子主题:RE:操作员重载

那么加入两个字符串的最简单方法是什么是不声明新变量来保存它们?

对我来说,声明一个新的变量和使用strncat()似乎似乎繁重......
m




 邮政 发布: 2007年7月31日星期二上午9:25  帖子主题:RE:操作员重载

Strcat(String1,String2);就像你的代码一样。但是,如果您使用的代码执行此操作,您将获得一个很好的溢出。

C对于字符串来说是可怕的,他们最终刚刚被光彩的阵列,它使用空字符来标记结束。如果使用strcat()和生成的字符串较长,那么您要在C中存储它的数组就无法知道,所以它会如下所示。这当然导致各种凌乱的错误。

遗憾的是,创建一个新的字符串几乎总是始终是确保您不超过原始字符串的长度的唯一途径。
WTD.




 邮政 发布: 星期二2007年7月31日3:13 PM  帖子主题:RE:操作员重载

最好的路由是使用函数分配并返回新字符串。但是,要小心!如果您这样做,您将诱使立即使用它,而不会将该函数的结果分配给变量。

这样疯狂,因为每次你使用这个函数时,你都会分配必须释放的内存,而且没有这样做,你有一个内存泄漏。  微笑
OneOffdriveByposter




 邮政 发布: 8月07日,2007年8月5:31 PM  帖子主题:Re:Re:操作员重载

WTD @TueJul 31,2007 3:13 PM写道:
如果您这样做,您将诱使立即使用它,而不会将该函数的结果分配给变量。

WTD,当然你知道这一点,但是为了那些没有:
C:
extern void my_malloc_strcat.(char **,char const *,char const *);
从上一个显示帖子:   
    指数 -> 编程,C. -> C帮助
查看上一个主题 告诉一个朋友可打印的版本下载主题订阅本主题私人信息刷新页面 查看下一个主题

11  [ 6 Posts ]
跳到:    


Style:  
搜索: