C基础&指针

大家都知道Android系统是基于linux开发的,内核是用linux,Android开发中,普通应用是不用跟linux打交道,只是我们的google大神给我们封装了层Android FrameWork帮我屏蔽了系统操作,以下图是Android系统分成结构,从结构中可以看中,我们的应用(App)都是通过Android FrameWork调用JNI与底层的C/C++进行交互的,
如:OpenGL,SQLite,音频,视频等。

C基础&指针_第1张图片
android_framework.png

下面我就把我学C中的一些笔记分享来了(有一部份是来源于网络),有什么不对的地方,欢迎各位大神指点,小弟在此表示感激!

开发工具

  • visual_studio
  • 下载地址:http://pan.baidu.com/s/1boBNJor 密码:f7m3

C基础

那么先来个Hello World吧!

//引用入头文件,标准的输入输出,像就我们Java导包一样,C需要自己导入,windows环境下的,linux环境的可能能不一样
#include//不同的平台下可能不一样
void main()
{
 printf("hello world\n");
 system("pause");//wins命令工具
}

C分为文件的声明.h&源文件.c,在编译的时候会去找函数的实现(所以在动态库里面函数不能重名),在不同的平台下面函数的源文件可能不一样。
C的main函数跟Java的main函数不一样,Java的main函数格式是固定的,C里面的main函数参数是不固定的,如可以:

#include
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
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
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
#include
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之所以会这么强大,就是因为指针的存在。

你可能感兴趣的:(C基础&指针)