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 的指针,表示它当前不指向任何有效内存地址。
相关推荐
明洞日记几秒前
【VTK手册019】 深入理解 vtkProperty:从几何表达到 PBR 物理渲染
c++·图像处理·算法·vtk·图形渲染
阿杰同学6 分钟前
Java 设计模式 面试题及答案整理,最新面试题
java·开发语言·设计模式
这样の我7 分钟前
java 模拟chrome指纹 处理tls extension顺序
java·开发语言·chrome
yong99908 分钟前
基于MATLAB的雷达压制干扰仿真
开发语言·matlab
Genevieve_xiao12 分钟前
【数据结构与算法】【xjtuse】面向考纲学习(下)
java·数据结构·学习·算法
修炼地14 分钟前
代码随想录算法训练营第二十七天 | 56. 合并区间、738.单调递增的数字、968.监控二叉树
c++·算法
仰泳的熊猫15 分钟前
1031 Hello World for U
数据结构·c++·算法·pat考试
catchadmin19 分钟前
现代高效 PHP 开发的最佳实践
开发语言·后端·php
高山上有一只小老虎22 分钟前
小红的正整数计数
java·算法
AnAnCode23 分钟前
【时间轮算法-实战】Java基于Netty的 `HashedWheelTimer`快速搭建时间轮算法系统
java·开发语言·算法·时间轮算法