半路出家, 我的iOS自学之路-1-C语言

xiaoxiao2021-02-28  32

半路出家, 我的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> // 定义一个纯C函数, 返回类型"char *"是一个C语言中的数据类型 char * get_a_c_string() { return "func#get_a_c_string: 这是C字符串"; } // 定义一个OC与C混合使用的函数, 返回类型"NSString *"是OC对象. 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语言 的一些知识.

转载请注明原文地址: https://www.6miu.com/read-2623380.html

最新回复(0)