美文网首页
C基础&指针

C基础&指针

作者: 放牛的星星 | 来源:发表于2017-04-26 14:53 被阅读37次

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

    android_framework.png

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

    开发工具

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

    相关文章

      网友评论

          本文标题:C基础&指针

          本文链接:https://www.haomeiwen.com/subject/crkizttx.html