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 的指针,表示它当前不指向任何有效内存地址。
相关推荐
加藤不太惠16 分钟前
【无标题】
java·数据结构·算法
学困昇19 分钟前
Linux基础开发工具(下):调试器gdb/cgdb的使用详解
linux·运维·服务器·开发语言·c++
金色旭光19 分钟前
目标追踪算法+卡尔曼滤波原理+ByteTrack使用
算法
biter down32 分钟前
C++ 组合与继承:从设计本质到实战,吃透高内聚低耦合
开发语言·c++
灰灰勇闯IT32 分钟前
C语言实战:字符串元音字母提取器的实现与优化
c语言·开发语言
fantasy5_543 分钟前
C++11 核心特性实战博客
java·开发语言·c++
夏乌_Wx1 小时前
练题100天——DAY22:数字拼接+只出现一次的数字
java·数据结构·算法
listhi5201 小时前
MOEAD算法实现详解(基于Python与MATLAB)
python·算法·matlab
天若有情6731 小时前
从构造函数到Vue3响应式:C++中“常量转特殊类型”的隐藏大招
开发语言·c++
李玮豪Jimmy1 小时前
Day32:动态规划part5(完全背包、518.零钱兑换 II、377.组合总和 Ⅳ、70.爬楼梯 (进阶))
算法·动态规划