函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| // main.m #import <Foundation/Foundation.h>
// C风格函数 int sumFunc(int a, int b) { return a + b; }
int main(int argc, const char * argv[]) { @autoreleasepool { int sum = sumFunc(1, 2); NGLog(@"sum = %d", sum); } return 0; }
|
指针 和 block
常用于多线程、异步任务、集合遍历、集合排序、动画转场
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| // main.m
void test() { printf("喵喵喵"); }
int sum(a, b) { return a + b; }
// 定义指针 void (*p)();
// 定义block typedef int (^b)(int, int);
int main(int argc, const char * argv[]) { @autoreleasepool { // 指向test p = test; // 调用 (*p)(); // = test(); = p(); // block也可以调用函数 b = sum; b(1, 2); // 直接定义函数 void(^myBlock)() = ^{ NSLog(@"这是个block"); } // 带参数 void(^myBlock2)() = ^(int a, int b) { return a + b; } } }
|
结构体 和 指针
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| // main.m @autoreleasepool { // 定义结构体 struct point { int x; int y; // 指针 struct point * nextP; } // 创建 struct point p; // 赋值 p.x = 10; p.y = 10; // 第二个结构体 struct circle { // 可以包含其他结构体 struct point pp; // 定义本结构体的变量 int radius; } struct circle c;
c.pp = p; c.radius = 50; // 定义结构体也可以使用 typedef struct _student { char name; int age; } student; // 调用 student a; a.name = "喵喵喵"; a.age = 20; // 使用指针 struct point * tmpPoint; // 指向p的地址 tmpPoint = &p; tmpPoint->x = 10; tmpPoint->y = 10; // 使用内部定义的指针指向pointB的地址 struct point pointB; pointB.x = 233; pointB.y = 233; p.nextP = &pointB; }
|