C与OC

C与OC的对比

  • 1.import 与include的区别:

  • import 与 include 一样,是将右边的文件拷贝到当前 import 的位置.

    • Import 的优点: 会自动防止重复拷贝
  • 2.printf和NSLog的区别:

     NSLog会自动换行;
     NSLog在输出内容时会附加一些系统信息;
     NSLog和printf接收的参数不一样.
    
  • 3.OC中的字符串

    • C语言中的字符串不是对象
char *name1 = "lnj";
char name2[] = "lmj";
  • OC中的字符串是一个对象
  • 正是因为OC中的字符串是一个对象, 所以它就具备了很多功能
 NSString *str = @"lk";

 Iphone *p = [Iphone new];
 注意: 输出C语言的字符串使用%s
      输出OC的字符串使用%@, %@就专门用于输出对象类型的
 NSLog(@"content = %@", [p loadMessage]);
如何创建OC字符串
NSString *str = @"lnj";
NSString *str = [NSString stringWithFormat:@"age = %i, height = %f\n", 30, 1.75];
NSLog(@"str = %@", str);
%@是专门用于输出对象类型的.
如何计算字符串的长度
NSString *str = @"你在干什么";
unsigned int len = [str length];
length 计算的长度不是字符串的存储空间,而是字符个数,不包含\0
OC中的局部变量和全局变量
写在函数和大括号外部的变量, 我们称之为全局变量.
作用域: 从定义的那一行开始, 一直到文件末尾
局部变量可以先定义在初始化, 也可以定义的同时初始化;
存储: 静态区
程序一启动就会分配存储空间, 直到程序结束才会释放.


写在函数或者代码块中的变量, 我们称之为局部变量.
作用域: 从定义的那一行开始, 一直到遇到大括号或者return;
局部变量可以先定义再初始化, 也可以定义的同时初始化;
存储 : 栈
存储在栈中的数据有一个特点, 系统会自动释放.
  • 对象都是在堆中创建的,对象中的成员变量自然也是在对象所在的堆区域内创建.

匿名对象:

匿名对象应用场景:
//1.当对象只需要使用一次的时候就可以使用匿名对象
 [[Iphone new] brand];
//2.匿名对象可以作为方法的参数(实参)
Person *p1 = [Person new];
[p1 signal:[Iphone new]];

如何将作为属性的结构体进行初始化?

  • 方法一:强制转换: stu->_birthday = (Date){1986, 1, 15};
  • 方法二:定义一个新的结构体,给d赋值,将d赋值给_birthday:
Date d = {1986, 1, 15};
stu->_birthday = d;
  • 方法三:分别赋值
stu->_birthday.year = 1986;
stu->_birthday.month = 1;
stu->_birthday.day = 15;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值