C语言知识点-5

1.设计一个协议,必须遵守NSObject基协议

2.所有的全局变量都是静态变量,被关键字static修饰的局部变量也是静态变量,程序运行之前创建,运行期间始终存在,直到程序结束,所有的局部变量都是默认情况下都是动态变量,存在于函数内部,函数执行完毕,自行销毁。静态变量只会执行一次,下次再调用static修饰的局部变量,此变量的值不会被重新初始化

3.存储在硬盘寄存器中的变量称为寄存器变量,寄存器变量比存储在内存中的变量访问效率更高,默认情况下自动变量(无static修饰的局部变量)和静态变量都是放在内存中。被关键字register修饰的自动变量都是寄存器变量,只有自动变量才可以是寄存器变量,全局变量和静态局部变量不行,寄存器变量只限于int ,char和指针类型变量使用。寄存器变量本身就是自动变量,所以函数结束时,变量被销毁。局部变量默认都是自动变量,所以auto int a;一般省略auto 

4.scanf函数只接收变量的地址,&   scanf("%d#%d\n", a, b) ,中间用#隔开,如果scanf参数中以空格隔开,实际输入可以以空格,tab,回车作为分隔符,scanf函数中不能写\n

5.%取余结果的正负只与左边有关,参与运算的数据是什么类型,结果就是什么类型  double a = 10 / 3 = 3.000000,一个汉字占据3个字符。

6.for循环先执行一次初始化语句,然后判断条件是否成立,成立再执行循环体,然后执行语句2,再次判断条件是否成立 

7.按位与,与上1还是它本身,可以取出某一位,用上右移可以打印二进制。按位异或,9^5^9=9^9^5=0^5=5
8.正确,int count=5;int ages [count];错误,int count=5;int ages [count]={10,11,15},如果想在定义数组的同时进行初始化,数组元素个数必须是常量,或者不写 
9.递归的2个条件:1.函数自己调用自己;2.必须有个明确的返回值。计算b的n次方:if (n<=0) return 1;retrun pow2(b, n-1) *b;
10.继承,抽取重复代码,建立了类之间的关系,子类可以拥有负类中所有成员变量和方法,基本所有类的根类是NSObject。重写也用在继承,子类重新实现父类中的某个方法,覆盖父类以前的做法,调用方法时优先去当前类中找,如果找不到,去父类中找。继承使用场合,1.当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中.2当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类。继承:xx是xxx  组合:xx拥有xxx 
11.#pragma mark 注释, #pragma mark - 注释
12..m中也可以写成员变量,但默认是private,因为只包涵.h,不知道.m内容。用@property可以不写成员变量,可以自动生成,但默认是private,如果想让子类直接访问,就手动写上成员变量 。@synthesize ,若手动实现了setter方法,编译器就只会自动生成getter方法和成员变量,,若手动实现了getter方法,编译器就只会自动生成setter方法和成员变量,若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量 
13.可以认为 id==NSObject *  NSObject *o = [Person new];多态。id d = [Person new];万能指针,可以指向/操纵任何继承NSObject的对象 
14.构造方法,用来初始化对象的方法,是个对象方法 
15.分类的作用:在不改变原来类内容的基础上,可以为类增加一些方法
 使用注意:
 1.分类只能增加方法,不能增加成员变量
 2.分类方法实现中可以访问原来类中声明的成员变量
 3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用
 4.方法调用的优先级:分类(最后参与编译的分类优先) --> 原来类  --> 父类 
16.类的本质 
 1.当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法。只会调用一次。
 2.当第一次使用某个类时,就会调用当前类的+initialize方法
 3.先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法)
   先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法) 
17.结构体:NSRange  NSPoint\CGPoint  NSSize\CGSize  NSRect\CGRect(CGPoint CGSize)
 将结构体转化为字符串的函数:  NSString *str1 = NSStringFromPoint(p);NSString *str2 = NSStringFromSize(s);NSString *str3 = NSStringFromRect(r);
 查找某个字符串在str中的范围:NSRange range = [str rangeOfString:@"ve o"]; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值