大家都知道Android系统是基于linux开发的,内核是用linux,Android开发中,普通应用是不用跟linux打交道,只是我们的google大神给我们封装了层Android FrameWork帮我屏蔽了系统操作,以下图是Android系统分成结构,从结构中可以看中,我们的应用(App)都是通过Android FrameWork调用JNI与底层的C/C++进行交互的,
如:OpenGL,SQLite,音频,视频等。
下面我就把我学C中的一些笔记分享来了(有一部份是来源于网络),有什么不对的地方,欢迎各位大神指点,小弟在此表示感激!
开发工具
- visual_studio
- 下载地址:http://pan.baidu.com/s/1boBNJor 密码:f7m3
C基础
那么先来个Hello World吧!
//引用入头文件,标准的输入输出,像就我们Java导包一样,C需要自己导入,windows环境下的,linux环境的可能能不一样
#include<stdio.h>//不同的平台下可能不一样
void main()
{
printf("hello world\n");
system("pause");//wins命令工具
}
C分为文件的声明.h&源文件.c,在编译的时候会去找函数的实现(所以在动态库里面函数不能重名),在不同的平台下面函数的源文件可能不一样。
C的main函数跟Java的main函数不一样,Java的main函数格式是固定的,C里面的main函数参数是不固定的,如可以:
#include<stdio.h>
void main(int argc,char * argv)
{
printf("hello world\n");
system("pause");
return 0;
}
- C的基本数据类型:
- int short long float duble char
/*
* int %d
* short %d
* long %ld
* float %f
* double %lf
* char %c
* %x 十六进制
* %o 八进制
* %s 字符串
*/
#include<stdio.h>
void main()
{
int i = 3;
short s = 3;
float f = 2.36;
printf("%d\n",i);
printf("%d\n", s);
printf("%f\n", f);
system("pause");
}
- 各基本数据类型所占的字节数:
#include<stdio.h>
void main()
{
int i = 3;
short s = 3;
float f = 2.36;
printf("int占%d字节数\n",sizeof(int));
printf("short占%d字节数\n", sizeof(short));
printf("float占%d字节数\n", sizeof(float));
system("pause");
}
一些跨平台的写法要注意如:
void main(){
/*这样写在linux平台下是编译不能过的
for (int i = 0; i < 10;i++){
printf("%d\n",i);
}
*/
//正确的写法应该是这样
int i=0;
for (;i < 10;i++){
printf("%d\n", i);
}
system("pause");
}
- 标准的输入输出
#define _CRT_SECURE_NO_WARNINGS//需要放在第一行,不然会报错
#include<stdio.h>
#include<stdlib.h>
void main(){
int i;
printf("请输入数据:\n");
scanf("%d",&i);//输入值,&取地址符
//打印
printf("输入的数据为:%d",i);
system("pause");
}
- 指针:存储的是变量的内存地址(房间号),通过指针可以操作基本类型里面的数据
void changeValue(float* f){
*f = 9;//对f存的地址指向的变量进行操作
}
void main(){
//定义一个int类型的指针
int i = 90;
int* p = &i;//p存储的就是i这个变量的内存地址,通过它就能修改i的值
*p = 88;//也可以在这里间接赋值
float f = 56.8f;
//定义一个float类型的指针
float* fp = &f;
printf("%#x\n",p);
printf("%#x\n",fp);
printf("p的值为:%d\n", *p);
printf("改变前的值为:%f\n", *fp);
changeValue(fp);
printf("改变后的值为:%f\n", *fp);//通过传入f的地址(指针),修改float变量的值,这在我们java中是办不到的
system("pause");
}
指针出是一个变量,指不过这个变量比较不一样,存的是内存的地址,如:上面的int* p=&i;,那么他与普通的变量有什么差别呢?他能通过内存地址去操作里面的值,如上面的changeValue方法,就把变量f修改成9了,这就是指针的强大之处。C的指针就是C的灵魂,C之所以会这么强大,就是因为指针的存在。
网友评论