c和oc小知识

时间:2023-03-08 18:12:07

1.const
const 修饰了*p1 / *p2
const int * p1=&age;
int const * p2=&age;//和上面的意义一样 ,换句话说就是 在 “ * ”一侧的话是一样的作用
如:
int num=15;
p1=#
p2=#//都可以变 从age地址变成了Num地址
*p1=30;
*p2=30;//报错,内容不可变!
int * const p3=&age;//和上面不一样了
const 离p3近说白了这个p3指针是个常量不能被修改了 所以, 下面会报错
如:
int num=25;
p3=#//报错
*p3=30;//age 就变成30了
2.const 和 #define宏的区别
宏是在编译前直接替换
const修饰的是变量
所以如果代码中宏很多 那么效率要低于const
#denfie AGE 20
int const AGE=20;
{
  nslog(@“%@”,AGE);
 nslog(@“%@”,AGE);
 nslog(@“%@”,AGE);
 nslog(@“%@”,AGE);
//如果是宏定义那么效率是4个内存 但是如果是变量那么只有一个内存
}
引申:那么可以搞个const.h 和const.m 专门用来管理字符串常量。
2.oc申明变量的区别

方式一:直接在@interface中的大括号中声明。

@interface MyTest : NSObject{

NSString *mystr;

}

方式二:直接用@property声明

@interface MyTest : NSObject{
@property (strong, nonatomic) NSString *mystr;

}

使用方式一声明的成员变量是只能在自己类内部直接使用,不能在类的外部使用,而且无法通过 “类名. 点”的方式显示。
方式二则相反,它可以在类的外部访问(声明在.h文件中可以.m也不可以访问),在类的内部可以通过下划线"_变量名”或者"self.变量名"的方式来访问。
3.id<XXX> object; 表示 object 是一个遵守xxx协议的指针。或者说只要遵守了xxx协议的指针就可以赋值给object了。
4..Object<Type> xcode7之后新增了泛型了,就是对摸个数组,字典,或者自定义模型里面的内容的类型进行限定。
5.数组和指针
 5.1 数组名代表,指向这个数组的第一个元素的指针
比如: int numbers[2][2]={
                            {10,20},
                            {11,21}
                                    };
那么  numbers[0]:指向numbers[0][0];
     number[1]:指向numbers[1][0]
           numbers :指向numbers[0]
 5.2,指针的移动的大小与指向内容的大小是一致的 numbers+1=&numbers+1*sizeof(numbers)
如 :
&numbers[0][0]+1,移动4个字节=numbers[0]+1
&numbers[0]+1,移动8个字节=numbers+1
&numbers+1,移动16个字节
NSLog(@"%ld,%p,%p", sizeof(&numbers),&numbers,&numbers+1);
NSLog(@"%ld,%p,%p", sizeof(&numbers[0]),&numbers[0],&numbers[0]+1);
NSLog(@"%ld,%p,%p", sizeof(numbers),numbers,numbers+1);
NSLog(@"%ld,%p,%p", sizeof(&numbers[0][0]),&numbers[0][0],&numbers[0][0]+1);
NSLog(@"%ld,%p,%p", sizeof(numbers[0]),numbers[0],numbers[0]+1);
2016-07-28 06:32:16.853 数组和指针[2715:178450] 8,0x7fff5fbff7c0,0x7fff5fbff7d0
2016-07-28 06:32:16.855
数组和指针[2715:178450] 8,0x7fff5fbff7c0,0x7fff5fbff7c8
2016-07-28 06:32:16.855
数组和指针[2715:178450] 16,0x7fff5fbff7c0,0x7fff5fbff7c8
2016-07-28 06:32:16.855
数组和指针[2715:178450] 8,0x7fff5fbff7c0,0x7fff5fbff7c4
2016-07-28 06:32:16.855 数组和指针[2715:178450] 8,0x7fff5fbff7c0,0x7fff5fbff7c4