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 的指针,表示它当前不指向任何有效内存地址。
相关推荐
郝学胜-神的一滴13 小时前
深入理解TCP连接的优雅关闭:半关闭状态与四次挥手的艺术
linux·服务器·开发语言·网络·tcp/ip·程序人生
Bear on Toilet13 小时前
递归_二叉树_48 . 二叉树最近公共祖先查找
数据结构·算法·二叉树·dfs
yaoxin52112314 小时前
325. Java Stream API - 理解 Collector 的三大特性:助力流处理优化
java·开发语言
0 0 019 小时前
CCF-CSP 39-2 水印检查(watermark)【C++】
c++·算法
plus4s20 小时前
2月15日(78,80,81题)
c++·算法·图论
能源系统预测和优化研究20 小时前
【原创改进代码】考虑碳交易与电网交互波动惩罚的共享储能电站优化配置与调度模型
算法·能源
9359620 小时前
机考27 翻译21 单词14
c语言·数据结构·算法
光泽雨20 小时前
C# 中 Assembly 类详解
开发语言·c#
少控科技20 小时前
C#基础训练营 - 02 - 运算器
开发语言·c#
Riemann~~21 小时前
C语言嵌入式风格
c语言·开发语言