C语言中NUL和NULL、‘\0‘之间的关系

  • '\0'NUL 字符,它是一个字符常量,其 ASCII 值为 0。这个字符用于标记 C 风格字符串的结尾。

  • NULL 是一个宏定义,通常被定义为整数常量 0 或 (void *)0,用来表示空指针。它用于指针操作,表示该指针不指向任何有效的内存地址。

虽然 '\0'NULL 在内部都可能表现为数值 0,但它们的应用场景和意义是不同的:

  1. '\0' (NUL 字符):用于字符串处理,作为字符串的终止符。
  2. NULL:用于指针操作,表示空指针。

示例

复制代码
#include <stdio.h>

int main() {
    // NUL 字符 '\0' 用于字符串结束
    char str[] = "hello";
    str[5] = '\0'; // 实际上这是多余的,因为 "hello" 已经包含 '\0'

    printf("String: %s\n", str); // 输出字符串直到遇到 '\0'

    // NULL 用于指针初始化或比较
    int *ptr = NULL;
    if (ptr == NULL) {
        printf("Pointer is null.\n");
    }

    return 0;
}

在这个例子中:

  • str 是一个以 \0 结尾的字符串。
  • ptr 是一个被初始化为 NULL 的指针,表示它当前不指向任何有效内存地址。
相关推荐
bubiyoushang8886 分钟前
基于MATLAB的自然图像梯度分布重尾特性验证方案
开发语言·matlab
MSTcheng.24 分钟前
【C++STL】priority_queue 模拟实现与仿函数实战
开发语言·c++
小年糕是糕手42 分钟前
【C++】C++入门 -- inline、nullptr
linux·开发语言·jvm·数据结构·c++·算法·排序算法
郝学胜-神的一滴1 小时前
Python中一切皆对象:深入理解Python的对象模型
开发语言·python·程序人生·个人开发
高洁011 小时前
具身智能-普通LLM智能体与具身智能:从语言理解到自主行动
人工智能·深度学习·算法·aigc·知识图谱
csbysj20201 小时前
JSP 隐式对象
开发语言
星期天21 小时前
3.2联合体和枚举enum,还有动态内存malloc,free,calloc,realloc
c语言·开发语言·算法·联合体·动态内存·初学者入门·枚举enum
梵克之泪1 小时前
【号码分离】从Excel表格、文本、word文档混乱文字中提取分离11位手机号出来,基于WPF的实现方案
开发语言·ui·c#
charlie1145141912 小时前
面向C++程序员的JavaScript 语法实战学习4
开发语言·前端·javascript·学习·函数
夫唯不争,故无尤也2 小时前
Python广播机制:张量的影分身术
开发语言·python