NULL,空字符串和"\0"

初学编程,脑袋闲的抽风突然想到

char* c1 = ""

char* c2 =  NULL

char* c3 = " "

char* c4 = "\0"

这四者之间到底有如何不同,就写了一段程序测试一下!

#include <stdio.h>
int main()
{
    char* c1 = "";
    char* c2 = NULL;
    char* c3 = " ";
    char* c4 = "\0";
   

    printf("c1 = %s\n", c1);
    printf("&c1 = %p\n", c1);
    printf("c1 = %d\n",*c1);   // 打印*c1 对应的十进制ASCII码
    printf("c2 = %s\n", c2);
    printf("&c2 = %p\n", c2);
    //printf("c2 = %d\n", *c2); // 这里会引发段错误
    printf("c3 = %s\n", c3);
    printf("&c3 = %p\n", c3);
    printf("c3 = %d\n", *c3);
    printf("c4 = %s\n", c4);
    printf("&c4 = %p\n", c4);
    printf("c4 = %d\n", *c4);     
   

    return 0;
}

编译执行如下所示:

 

可见 char* c1 = "" 与 char* c4 = "\0" 效果是相同的,都是在内存中申请了一个字节的内存用来存放一个空字符,

空字符对应的十进制ASCII码是0;

而char* c3 = " " 是在内存中申请了一个字节的内存存放空格字符即sp, 空格字符对应的十进制ASCII码是32;

char* c2 = NULL 没有申请任何内存也没有存放任何内容!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值