在c语言程序中null指针常量的作用是什么

2020-11-24 18:35:14 字数 6008 阅读 9528

1楼:匿名用户

用来表示空指针。

在c中,变量可以是任何值

但一个非法的指针值,会导致访问出错,程序崩溃,或者出现不可预知后果。

所以 需要一个值,标记这个指针是非法的

null的值为0,在计算机中,是不可能访问0地址的。

所以用null表示这个指针还没有被赋值。

比如if(s!=null) *s=....

这样赋值就更安全。

2楼:匿名用户

代表这个指针不指向任何有效的内存地址

c语言中null有什么作用?具体用法是什么?

3楼:

null

其实就是

#define null 0

也就是说它就是0

不过是写**的时候为指针什么的赋值或判断指针是否为空时看起来直观一些

4楼:匿名用户

null 属性指定数组或指针值是否可以为 null。

pre 和 post 特性上允许此属性,此属性只能应用于数组或指针数据类型。

必须通过使用下列值之一来设置 null 属性:

sa_yes - 此值为 null。

sa_no - 此值不为 null。

sa_maybe - 此值可以为 null。

注意 sa_ 前缀对于 c++ 是可选的。

示例下面的**演示如何使用 null 属性:

以带有颜色区分的格式查看复制到剪贴板打印// c#include

void f([sa_pre(null=sa_no)] char** pc);

// c++

#include

using namespace vc_attributes;

void f([pre(null=no)] char** pc);

5楼:匿名用户

在stdio.h(或iostream)中定义:#define null 0

作用就是初始化,int a;编译器会赋一个不可预知的值,int a = null; a就是0。同理是指针,而且尤其是指针。一个空指针(int* p = null;)比一个野指针(int *p;)要安全的多。

在很多书籍中都提倡使用前后的指针都要赋null。

6楼:匿名用户

null就是空的意思,一般为0

7楼:匿名用户

为空,或缺省值,不用赋值

c语言中的空指针是什么意思?

8楼:水瓶萧兮

空指针是就是一个被赋值为0的指针。

对于空指针值,一般的文档中倾向于用 null 表示,而没有直接说成 0。但是我们应该清楚:对于指针类型来说,返回 null 和 返回 0 是完全等价的,因为 null 和 0 都表示 null pointer(空指针)。

扩展资料

如果一个 空指针常量 赋给了一个有类型的指针变量,那么这个指针就叫空指针。它不指向任何的对象或者函数。

例如:如果 p 是一个指针变量。

若进行: p = 0;、p = 0l;、p = '\0';、p = 3 - 3;、p = 0 * 17; 中的任何一种赋值操作之后(对于 c 来说还可以是 p = (void*)0;)。

p 都成为一个空指针,并且由系统保证空指针不指向任何实际的对象或者函数。 反过来说,任何对象或者函数的地址都不可能是空指针。

指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量。指针一般出现在比较底层的程序设计语言中,如c语言。高层的语言如java一般避免用指针,而是引用。

指针作为数据类型,可以从一个函数类型、一个对象类型或者一个不完备类型中导出。从中导出的数据类型称之为被引用类型(referenced type)。指针类型描述了一种对象,其值为对被引用类型的实体的引用。

9楼:匿名用户

这样一看才知道大家对空指针的概念如此浑浊哦!!

首先:void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何种方式来解释这片内存.

所以这种类型的指针不能直接进行取内容的操作.必须先转成别的类型的指针才可以把内容解释出来.

还有'\0',这也不是空指针所指的内容. '\0'是表示一个字符串的结尾而已,并不是null的意思.

真正的空指针是说,这个指针没有指向一块有意义的内存,比如说:

char* k;

这里这个k就叫空指针.我们并未让它指向任意地点.

又或者char* k = null;

这里这个k也叫空指针,因为它指向null 也就是0,注意是整数0,不是'\0'

一个空指针我们也无法对它进行取内容操作.

空指针只有在真正指向了一块有意义的内存后,我们才能对它取内容.也就是说要这样

k = "hello world!";

这时k就不是空指针了.

10楼:匿名用户

如果函数的参数可以是任意类型指针,那么应声明其参数为void *

典型的如内存操作函数memcpy和memset的函数原型分别为:

void * memcpy(void *dest, const void *src, size_t len);

void * memset ( void * buffer, int c, size_t num );

这样,任何类型的指针都可以传入memcpy和memset中,这也真实地体现了内存操作函数的意义,因为它操作的对象仅仅是一片内存,而不论这片内存是什么类型。空指针仅仅是申明了一个变量名,告诉编译器有个变量存在,当然你后面肯定会用到它(事实上你不用也没人怪你)。

注意c++中语法要求更严格,不允许直接对空指针赋值,而必须先进行类型转换。

11楼:蓝冰_蓝水

上面的错了。其实空指针就是指值为null的指针。而且null在c和c++的定义方式也不一样,甚至不同的编译器也有不同的要求。

例如:define null 0 //c的定义方式

define null (void *)0 //c++的定义方式

12楼:匿名用户

指针没有指向任何东西

空指针指的就的'\0'!

13楼:匿名用户

指针没有指向任何东西

14楼:匿名用户

空指针指的就的“0”!

15楼:你是卧底

char* k 不能算空指针吧

在c语言的指针使用中,null的值是?

16楼:匿名用户

c语言中null是个宏,在stddef.h中定义:

#ifndefnull

#ifdef__cplusplus//如果是c++则为0#definenull0

#else

#definenull((void*)0)//c中为((void*)0)

#endif

#endif

无论是哪个语言,从数值角度上来说,null就是0。作为指针类型变量,赋值为null时,表示该指针是个空指针。null常用来判断一个指针变量是否为空指针,从而确定程序下一步的操作。

如,程序开始,定义一个指针变量并初始化为空,在程序过程中,有可能使用该变量,也可能未使用该变量,则在程序返回前,可以通过判断其是否为空指针,来进行内存释放(防止内存泄露)。

voidfunc()

17楼:

在c语言中null被定义为:

#define null ((void*)0)表示其值是0,但意义是空指针。把一个指针赋值为null,通常的说法是“将指针悬空”,这样可以防止对无效地址的访问。

但是在c++语言中null被定义为:

#define null 0

vc里也是这样定义的。

18楼:湛蓝水晶

#define null (void*)0

19楼:匿名用户

null的值为0。写成地址就是0x00000000。

20楼:我的

就0,以后编程会经常用到这个东西,特别是分配内存的时候

21楼:嗜血魂

自己动手哎

printf下不就知道了么?

c语言中null是什么意思

22楼:

在c语言中,

null和0的值都是一样的,但是为了目的和用途及容易识别的原因,null用于指针和对象,0用于数值

对于字符串的结尾,使用'\0',它的值也是0,但是让人一看就知道这是字符串的结尾,不是指针,也不是普通的数值

在不同的系统中,

null并非总是和0等同,null仅仅代表空值,也就是指向一个不被使用的地址,在大多数系统中,都将0作为不被使用的地址,所以就有了类似这样的定义

#define null 0

但并非总是如此,也有些系统不将0地址作为null,而是用其他的地址,所以说,千万别将null和0等价起来,特别是在一些跨平台的**中,这更是将给你带来灾难。

23楼:匿名用户

null 就是一个特殊的指针值, 其实本质是一个宏#define null (void *)0也就是0值, 强制转成了指针。

用来表示一个指针非法。 所以在初始化的时候经常用null来初始化。

由于是非法指针, 所以对这个指针取值(*操作)会导致程序崩溃。 必须要先指向一个有效空间才可以。

24楼:匿名用户

c语言null定义,定义如下:

#undef null

#if defined(__cplusplus)#define null 0

#else

#define null ((void *)0)#endif

所以我觉得,如果一个指针被赋予null,应该就相当于这个指针执行了0x0000这个逻辑地址,但是c语言中0x0000这个逻辑地址用户是不能使用的(有些人说是因为0x0000没有映射到物理地址,也有人说是因为0x0000映射到的地址是操作系统用于判断野指针的,我也不太懂,总之就是用户不能使用啦),所以当你试图取一个指向了null的指针的内容时,就会提示段错误,听着有点绕,看程序:

int *node=null;

int a=0;

a=*node;

printf("%d\n",a);

由于node执行的是null,也就是逻辑地址0x0000,而这个地址用于是不能访问的,所以编译器提示段错误。

25楼:乐跑小子

在头文件 中 定义的一个常量 null=0;

用于指将指针 悬空(不指向任何位置)楼上的指向0内存不对的.

int *p=null;

null是个好东西,给一出生的指针一个安分的家

null不是被定义为0,就是被定义为(void *)0,这两种值几乎是相同的。当程序中需要一个指针时(尽管编译程序并不是总能指示什么时候需要一个指针),一个纯粹的零或者一个void指针都能自动被转换成所需的任何类型的指针。

null总是等于0吗?

对这个问题的回答与“等于”所指的意思有关。如果是指“与。比较的结果为相等”,例如:

if(/* ... */)

else

/* ... */

if(p==0)

那么null确实总是等于0,这也就是空指针定义的本质所在。

如果是指“其存储方式和整型值。相同”,那么答案是“不”。null并不必须被存为一个整型值0,尽管这是null最常见的存储方式。在有些计算机中,null会被存成另外一些形式。

如果想知道null是否被存为一个整型值0,可以(并且只能)通过调试程序来查看空指针的值,或者通过程序直接将空指针的值打印出来(如果将一个空指针强制转换成整类型,那么=所看到的很可能就是一个非零值)。

C语言的指针有什么实际作用,C语言的实际作用是什么?

1楼 匿名用户 指针实际上就是一个内存地址,比如一个函数指针,就是一个函数的入口地址 ,通过这个地址,系统就可以找到这个函数的位置并调用它。简单地说指针就是指向变量和对象的地址。指针的用途非常广泛,比如如果你想通过函数改变一个变量的值,就得用指针而不能用值传递。 还有在很多时候变量,特别是对象的数据...

在c语言中指针变量有什么实际的作用

1楼 想不到名字啊呜 构建动态数组啊 使被调函数修改主调函数的变量啊 获取 的地址啊 太多了,多到我都忘的差不多了 没有指针c就不叫c了,可以说是c里面最重要,也是最难学的部分嘛,主要还是考试要 c语言的指针有什么实际作用? 2楼 匿名用户 指针实际上就是一个内存地址,比如一个函数指针,就是一个函数...

C语言中这段程序是什么意思,C语言程序中break是什么意思?

1楼 金色潜鸟 这段程序是构建一张黑白棋盘位图。即,横向每8格为一段,黑白交替,竖向也是 每8格为版一段,黑白交替。 i 0x8 即取权 2进制i值的 右数第三位,j 0x8, 取 2进制j值的 右数第三位 然后2者做 异或 运算, 0 0 0 1 0 1 0 1 1 1 1 0 。 数值 0 为黑...