这段时间的我会讲解Android NDK开发及其相关内容,通过我的讲解分享能让新手们掌握Java层与Native层之间是如何进行通信的。尽我的能力给到你们帮助。
了解C语言
C语言的诞生是现代程序语言革命的起点。今天C语言依旧在系统编程、嵌入式编程等领域占据着统治地位。C语言由丹尼斯.里奇开发,被称为C语言
1.1 C/C++概念:当代最优秀的程序设计语言
C/C++是当代最优秀的程序设计语言。C语言是C++的基础,C++和C语言在很多方面是兼容的。
C语言是一个结构化语言,它的重点在于算法与数据结构。C语言用于嵌入式开发和程序结构优化。C++首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制。
所以C语言和C++的最大区别在于它们解决问题的思想方法不一样。
因为在后面的学习当中用到的都是C语言的内容,所以C++这部分内容不做过多讲解,感兴趣的可以课后去了解下C++语言。
1.2 C的令牌
C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。
例如:
}#include <stdio.h>
int main()
{
/* 我的第一个 C 程序 */
printf(“Hello World! \n”);
return 0;
在这里需要强调的是分号(“;”),在 C 程序中分号是语句结束符,跟汉语言里的句号(“。”)一个概念。它表明一个逻辑实体的结束,每个语句必须以分号结束。
1.3 注释
C语言有两种注释,分别是:
第一种:以“//”格式开始的是单行注释,这种注释可以单独占一行。
第二种:以“/* */”格式的注释可以注释单行或多行。
1.4 标识符
C标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母A-Z或a-z或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。
C标识符内不允许出现关键字及特殊字符,比如@、$和%。C是区分大小写的编程语言。因此,在C语言中Manpower和manpower是两个不同的标识符。
下表已列出10个有效的标识符:
mohd | zara | abc | move_name | a_123 |
---|---|---|---|---|
myname50 | _temp | j | a23b9 | retVal |
1.5 关键字
下表列出了C中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。
关键字 | 描述 | 关键字 | 描述 |
---|---|---|---|
auto | 声明自动变量 | int | 声明整型变量或函数 |
break | 跳出当前循环 | long | 声明长整型变量或函数返回值类型 |
case | 开关语句分支 | register | 声明寄存器变量 |
char | 声明字符型变量或函数返回值类型 | return | 子程序返回语句(可以带参数,也可不带参数) |
const | 声明只读变量 | short | 声明短整型变量或函数 |
continue | 结束当前循环,开始下一轮循环 | signed | 声明有符号类型变量或函数 |
default | 开关语句中的"其它"分支 | sizeof | 计算数据类型或变量长度(即所占字节数) |
do | 循环语句的循环体 | static | 声明静态变量 |
double | 声明双精度浮点型变量或函数返回值类型 | struct | 声明结构体类型 |
else | 条件语句否定分支(与 if 连用) | switch | 用于开关语句 |
enum | 声明枚举类型 | typedef | 用以给数据类型取别名 |
extern | 声明变量或函数是在其它文件或本文件的其他位置定义 | unsigned | 声明无符号类型变量或函数 |
float | 声明浮点型变量或函数返回值类型 | union | 声明共用体类型 |
for | 一种循环语句 | void | 声明函数无返回值或无参数,声明无类型指针 |
goto | 无条件跳转语句 | volatile | 说明变量在程序执行中可被隐含地改变 |
if | 条件语句 | while | 循环语句的循环条件 |
1.6 C指针
指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址。就像其他变量或常量一样,必须在使用指针存储其他变量地址之前,对其进行声明。
指针变量声明的一般形式为:type yijindaxue;
type 是指针的基类型,它必须是一个有效的C数据类型,yijindaxue是指针变量的名称,星号用来声明指针,与乘法中使用的星号是相同的。但是,在这个语句中星号*是用来指定一个变量是指针。
下表是有效的指针声明:
int *ip; | * 一个整型的指针 * |
---|---|
double *dp; | * 一个 double 型的指针 * |
float *fp; | * 一个浮点型的指针 * |
char *ch; | * 一个字符型的指针 * |
所有实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,对应指针值的类型都是一样的,都是一个代表内存地址长度为十六进制数。
实例:
探究实例中#include <stdio.h> 是什么?
今日学习分享到这结束,明天会持续更新的,并解答。
想跟着我学习进步的的朋友记得关注收藏点赞哦。
安卓逆向交流群643060786微信yijin1108an