NULL 是指的是C中空指针
nil 指的是OC中把一个对象设置为空
void 一般指的是返回值为空
(void *) 一般指的是无类型的指针 而不是空指针 通用指针的意思
类似的还有有趣的例子 [Object new ] &[NSNull null]
前者每次都会新建一个对象 而重复后者的时候打印地址会发现地址相同 后者最主要的
作用是用来在数组占位,不需要新建更多的对象
下面为例子::
//
// main.m
// Foundation-空值
//
// Created by qingyun on 15/12/8.
// Copyright (c) 2015年 qingyun. All rights reserved.
//
import
import “TestClass.h”
int main(int argc, const char * argv[]) {
// NULL C的空值针
char *p = NULL;
// void 代表没有,一般用于空参数或者空返回值的表示
void *p1; // 这时void代表空类型,p1是没有类型的指针
p1 = p;
// null
NSString *str;
NSLog(@”str >>>> %@”, str);
TestClass *tc = [TestClass new];
NSLog(@”tc >>>>> %@”, tc);
// nil 表示空对象
NSLog(@”tc >>>>> %p”, tc);
tc = nil;
NSLog(@”tc >>>>> %p”, tc);
// @0 表示数值0的对象
int a = [@0 intValue];
NSArray *arr = @[@11,@”abc”,@YES, @0];
// NSNull 来表示还没有内容的对象 [NSNull null]
NSMutableArray *group1 = [NSMutableArray arrayWithArray:@[@"zongkai",[NSNull null],@"mengjie",[NSNull null],@"erlong",[NSNull null],@"lifeng",[NSNull null],[NSNull null]]];
NSLog(@"group1 >>>> %@", group1);
// [NSObject new];//a
// [NSObject new];//b
// [NSObject new];//c
//
NSLog(@”nsnull >>>> %@, %p”, [NSNull null],[NSNull null]); //null1
NSLog(@”nsnull >>>> %@, %p”, [NSNull null],[NSNull null]);
NSLog(@”nsnull >>>> %@, %p”, [NSNull null],[NSNull null]);
NSLog(@”nsnull >>>> %@, %p”, [NSNull null],[NSNull null]);
NSLog(@”nsnull >>>> %@, %p”, [NSNull null],[NSNull null]);
NSLog(@”nsnull >>>> %@, %p”, [NSNull null],[NSNull null]);
NSLog(@”nsnull >>>> %@, %p”, [NSNull null],[NSNull null]);
NSLog(@”nsnull >>>> %@, %p”, [NSNull null],[NSNull null]);
// [NSNull null]; //null2
NSString *st = @"Moumoumou";
//NSInteger index = 0;
NSMutableArray *indexs = [NSMutableArray array];
// 在集合遍历的时候的不能将该集合的元素改变
// for (id obj in group1) {
// if (obj == [NSNull null]) {
// index = [group1 indexOfObject:obj];
// break;
// }
// }
// group1[index] = st;
for (int i=0; i<[group1 count]; i++) {
if (group1[i] == [NSNull null]) {
[indexs addObject:@(i)];//
}
}
NSLog(@”indexs >>>>> %@”, indexs);
if 0
// 让系统选择默认第一个空位置
NSInteger firstFreePosition = [[indexs firstObject] integerValue];
group1[firstFreePosition] = st;
else
// 学生自己选择自己的空位置
NSInteger firstFreePosition;
NSLog(@"请选择您要的位置:");
for (NSNumber *num in indexs) {
printf("%ld\t", (long)[num integerValue]);
}
printf("\n");
scanf("%ld", &firstFreePosition);
group1[firstFreePosition] = st;
endif
NSLog(@"group1 >>> %@", group1);
return 0;}