半路出家, 我的iOS自学之路-1-C语言
只学过Java, 半路出家, 自学iOS. 以下是我读完《Objective - C 编程》(第2版)的读书笔记博客中出现任何差错, 遗漏, 还请您在评论中告诉我群号:( ), 欢迎自学iOS的人加入, 一起交流, 共同成长
概念基础
Objective-C是C语言的母集合.
意思就是说C语言的各种用法都可以在OC的编辑器里使用. 当时我不知道”母集合”是什么意思, 查了之后也一知半解的, 于是我在学iOS之前又花了一个多月的时间读完了一本C语言的书. 这里就列举一些C语言里的一些规范吧,或者说是概念.
C语言里面的一些规则
.h文件
也叫"头文件", 是声明 全局变量/静态变量/函数声明 的地方. 这些元素被定义在"头文件"里, 其他的文件"#include"了这个"头文件"之后,
就能使用这个"头文件"里的元素了.
比如: 定义了一个 A.h 的文件, 我在 B.h 或者 B.c 里 #include “A.h”, 我就能在 B.c 里调用 A.h 里的 枚举, 变量, 函数.
.c文件
也叫"源文件", 是定义 全局变量/静态变量/函数声明, 使用变量, 实现函数代码, 使用函数 的地方.
补充:
在 头文件 里声明 全局变量 的时候, 需要用 “extern”, 然后在对应的 源文件 里对它进行赋值, 比如
// 头文件
A.h
extern int a; // 声明变量
// 源文件
A.c
int a =
10; // 定义变量
一个 “头文件” 对应 “唯一” 一个 “源文件”, 也就是一个 A.h 只有一个 A.c. 这就是规矩. 至于为什么, 就只有去看另一篇博客, 讲 编译器 Makefile, Makefile经典教程(掌握这些足够) .
结构体 / 枚举
struct 结构体
struct OBJC { int a; char *str; }; // 定义个结构类型struct OBJC st; // 定义一个 “struct OBJC” 类型的 结构体变量, 变量名叫 sttypedef struct OBJC CNObj; // 定义了一个 “struct OBJC” 类型的别名, 叫 CNObjc;CNObjc cnSt; // 定义了 一个 CNObjc 类型(又名”struct OBJC”)的变量, 变量名叫 cnStCNObjc *pcnSt = &cnSt; // 定义了一个 结构体指针 类型的变量, 变量名叫 pcnSt使用 结构体 的 成员变量
cnSt.a = 10; // 变量通过”点”来获得 成员变量pcnSt->a = 20; // 指针变量通过”->”来获得 成员变量enum 枚举
enum emA { CONST_AA, // 默认赋值0, 后面的 常量的值 依次自动 递增 CONST_BB, // 1 CONST_CC // 2 } // 枚举, 枚举类型 enum emA, 里面的成员都是 常量. enum emB { // CONST_A = 13, // 手动设置初始值, 后面的 常量的值 依次自动 递增 CONST_B, // 14 CONST_C // 15 } CONST_A // 可以直接使用枚举中的 常量 不能重复定义
代码演示
OC作为C语言的母集, 允许OC和C代码的混合使用.
main.m (文件)
#import <Foundation/Foundation.h>
char * get_a_c_string() {
return "func#get_a_c_string: 这是C字符串";
}
NSString * get_a_oc_string() {
return @
"func#get_a_oc_string: 这是OC字符串";
}
int main(
int argc,
const char * argv[]) {
@autoreleasepool {
printf(
"%s\n", get_a_c_string());
printf(
"%s\n", [get_a_oc_string() cStringUsingEncoding:NSUTF8StringEncoding]);
NSLog(@
"%@\n", get_a_oc_string());
}
return 0;
}
打印结果:
func#get_a_c_string: 这是C字符串
func#get_a_oc_string: 这是OC字符串
2018-04-11 15:01:00.190490+0800 GCD_Test[2972:1354061] func#get_a_oc_string: 这是OC字符串
Program ended with exit code: 0
以上就是我在 OC 里经常会看到的, 接触到的 C语言 的一些知识.