typedef int INT; // 給int定義別名INT數組
typedef int ARR[4]; ARR a1;//定義了一個長度爲4的整形數組函數
//typedef 定義類型spa
// typedef 給基本數據類型 構造類型 枚舉類型 函數指針 起別名.net
// 函數指針: 指向函數的指針指針
#import <Foundation/Foundation.h>orm
int sum(int a,int b){get
return a+b;io
}import
int main(int argc, const char * argv[]) {變量
// 調用函數
int s1 = sum(10, 119); // 函數名存儲的是函數的首地址
NSLog(@"%d",s1); // 129
// 函數指針p,p指向的是sum函數的首地址
int (*p)(int a, int b);
p = sum; // 給p賦初始值
int s2 = (*p)(10,119);
NSLog(@"%d",s2); // 129
typedef int (*p1)(int a, int b); //給返回值是int而且有2個參數的函數起別名,別名是p1,p1是一種類型
// 定義無參無返回值的block變量
void (^block1)(); // block1是一個返回值是void沒有參數的block變量
block1 = ^{
NSLog(@"hahah");
};
// 使用typedef
typedef void(^block2)(); // 給返回值是void 沒有參數的代碼塊起一個別名,別名是block2;
// block2 = ^{
// NSLog(@"222");
// }; 會報錯
block2 bb; // bb是一個block變量
bb = ^{
NSLog(@"bb");
};
bb();
// 給有參數沒有返回值的block起別名
typedef void(^blockType)(int); // blockType 是一個類型
blockType b1;
b1 = ^(int a) {
NSLog(@"a = %d",a);
};
b1(10);
// 給有參數有返回值的block起別名
typedef int(^blockType2)(int ,int);
blockType2 b2 = ^ (int x,int y) {
return x + y;
};
int sum = b2(10,5);
NSLog(@"%d",sum);
}
return 0;
}