您的位置:首页 > 编程语言 > C语言/C++

C与OC

2015-08-31 22:20 246 查看

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息