c语言中怎样给整型和字符型赋空值(NULL)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中怎样给整型和字符型赋空值(NULL)相关的知识,希望对你有一定的参考价值。

NULL在32位操作系统的内存中的表现就是0x0000 0000 0000 0000 0000 0000 0000 0000,即32位都为0,其值其实为0
所以,有
int i = 0; //让i为NULL
char c = '\0'; //'\0'在内存中的表现也为一串0,等价与0和NULL
参考技术A 空值这个概念实际上只是针对指针而言的。整型数据和字符的空值实际上就是一个默认值。整型数据的默认值是0,字符型数据的默认值是‘\0’ 参考技术B NULL的值为0
int a=0;
char s[]=0;
参考技术C int a=null
char a='null'
,阿克斯码 上null就代表空值
参考技术D 可以都赋值为0吧

nilNilNULLNSNull的区别

nil:指向一个对象的空指针,对objective c id 对象赋空值.

Nil:指向一个类的空指针,表示对类进行赋空值.

NULL:指向其他类型(如:基本类型、C类型)的空指针, 用于对非对象指针赋空值.

NSNull:在集合对象中,表示空值的对象.

1.nil 在指向一个对象的指针为空 定义如下:

#ifndef nil
# if __has_feature(cxx_nullptr)
#   define nil nullptr
# else
#   define nil __DARWIN_NULL
# endif
#endif

在Objective-C中用于id类型的对象

NSString *str = nil;
NSURL    *url  = nil;
id object      = nil;

2.Nil 指向一个类的指针为空 定义如下:

#ifndef Nil
# if __has_feature(cxx_nullptr)
#   define Nil nullptr
# else
#   define Nil __DARWIN_NULL
# endif
#endif

在Objective-C中用于Class类型的对象

Class Class1 = Nil;
Clsss Class2 = [NSURL class];

3.NULL 指向C类型的指针为空 在stddef.h中定义如下:

#if defined(__need_NULL)
#undef NULL
#ifdef __cplusplus
#  if !defined(__MINGW32__) && !defined(_MSC_VER)
#    define NULL __null
#  else
#    define NULL 0
#  endif
#else
#  define NULL ((void*)0)
#endif

用于对非对象指针赋空值简单举例

int   *intA    = NULL;
char *charC     = NULL;
struct structStr = NULL;

4.NSNull在Objective-C中是一个类.

NSNull有 + (NSNull *)null; 单例方法.

多用于集合(NSArray,NSDictionary)中值为空的对象.

NSArray *array = [NSArray arrayWithObjects:
                      [[NSObject alloc] init],
                      [NSNull null],
                      @"aaa",
                      nil,
                      [[NSObject alloc] init],
                      [[NSObject alloc] init], nil];

NSLog(@"%ld", array.count); // 输出 3,NSArray以nil结尾

//

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
                                @"Object0", @"Key0",
                                @"Object1", @"Key1",
                                nil,        @"Key-nil"
                                @"Object2", @"Key2",
                                nil];
NSLog(@"%@", dictionary); // 输出2个key-value,NSDictionary也是以nil结尾

//

NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] init];
[mutableDictionary setObject:nil forKey:@"Key-nil"]; // 会引起Crash
[mutableDictionary setObject:[NSNull null] forKey:@"Key-nil"]; // 不会引起Crash
//所以在使用时,如下方法是比较安全的
[mutableDictionary setObject:(nil == value ? [NSNull null] : value)
                      forKey:@"Key"];



文/Jasomzl(简书作者)
原文链接:http://www.jianshu.com/p/c01e875686d3
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

 

以上是关于c语言中怎样给整型和字符型赋空值(NULL)的主要内容,如果未能解决你的问题,请参考以下文章

c语言中将一个浮点型赋值给整型时,会不会四舍五入?

为变量或字符串对象赋空值null长度为0的字符串不赋值 占不占内存

delphi 整型赋值为字节,

C语言里怎样理解长整型 短整型 和无符号型变量和常量?

C语言中如何把一个字符串转化成其ASCII码的数组??

C#怎么 给数组赋空值 判断数组为空