“ \ 0”和“ \ 0”之间的区别

费米

我试图理解下面的代码,但是我"\0"之间感到困惑'\0'。我知道它很愚蠢,但是请帮我

   #define MAX_HISTORY 20

   char *pStr = "\0";
   for(x=0;x<MAX_HISTORY;x++){
        str_temp = (char *)malloc((strlen(pStr)+1)*sizeof(char));
        if (str_temp=='\0'){
            return 1;
    }
    memset(str_temp, '\0', strlen(pStr) );
    strcpy(str_temp, pStr);
放松

双引号创建字符串文字。"\0"包含单个字符的字符串文字也是如此'\0',外加第二个字符作为终止符。写空字符串""一种愚蠢的方式(这是惯用的方式)。

单引号是字符文字,所以'\0'是一个int表示为0的编码值的字符尺度的值。

代码中的Nits:

  • 不要转换malloc()C中的返回值
  • 不要按来缩放分配sizeof (char),始终为1,因此不会增加任何值。
  • 指针不是整数,NULL通常应与之进行比较
  • 代码的整个结构没有意义,循环中有一个分配,但是指针被丢弃了,从而浪费了大量内存。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章