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 的指针,表示它当前不指向任何有效内存地址。
相关推荐
Dovis(誓平步青云)2 分钟前
同一条路线在手机和平板上怎样换一种排版
android·开发语言·数据库·智能手机·音视频
春风解人意8 分钟前
从零开始学习嵌入式P30----进程间的通信
c语言·学习
OPEN-F8 分钟前
C++进阶教程:文件流与字符串流
开发语言·c++·算法
2601_9669496512 分钟前
9:25-9:30 如何获取 A 股开盘基准价?QuantDash Python SDK 实战初始化量化策略状态
开发语言·人工智能·python·量化·quantdash·量化数据源
Java小白笔记15 分钟前
Java中fixedDealy和fixedRate的区别是什么?
java·开发语言
boxiansheng16316 分钟前
通讯录系统报错(二)
c语言·数据结构
@兽血沸腾20 分钟前
Thread线程和synchronized锁
java·开发语言
维克兜率天28 分钟前
4.1.3 策略类型全景图:六大策略,你适合哪个
笔记·python·算法·量化
jimy129 分钟前
std::move(a)本质是把a转换成右值引用类型
开发语言·c++
01_ice33 分钟前
c++类和对象(中)
c++·算法