设为首页收藏本站 |天气与日历| 2025-07-01 星期二 16:48:00 (建党节) 乙巳(蛇)年 六月初七 申时
     
切换到窄版

私人站点

 找回密码
 立即注册
搜索
查看: 144|回复: 0

野指针和空指针

[复制链接]

954

主题

954

帖子

3879

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3879
发表于 2021-12-7 12:35:39 | 显示全部楼层 |阅读模式
指针变量也是变量,是变量就可以任意赋值,不要越界即可(32位为4字节,64位为8字节),但是,任意数值赋值给指针变量没有意义,因为这样的指针就成了野指针,此指针指向的区域是未知(操作系统不允许操作此指针指向的内存区域)。所以,野指针不会直接引发错误,操作野指针指向的内存区域才会出问题。
        int a = 100;
        int *p;
        p = a; //把a的值赋值给指针变量p,p为野指针, ok,不会有问题,但没有意义
        p = 0x12345678; //给指针变量p赋值,p为野指针, ok,不会有问题,但没有意义
        *p = 1000;  //操作野指针指向未知区域,内存出问题,err
但是,野指针和有效指针变量保存的都是数值,为了标志此指针变量没有指向任何变量(空闲可用),C语言中,可以把NULL赋值给此指针,这样就标志此指针为空指针,没有任何指针。
        int *p = NULL;
NULL是一个值为0的宏常量:
#define NULL    ((void *)0)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|编程站点 ( 冀ICP备2023028127号-2 )|友链申请|

GMT+8, 2025-7-1 16:48 , Processed in 0.077764 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表