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 为黑...