C基础&指针

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,616评论 3 44
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,267评论 25 708
  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,880评论 3 71
  • 月儿跟着妈妈去姥姥家,经常有人隔着院墙和她们聊天,月儿坐在小板凳上,看着一个个脑袋过来过去。咦?姥姥家的院墙怎...
    Blues_1bfa阅读 236评论 0 1
  • 今天我要分享一个好消息给大家,我儿子会跪爬了,可能你会说小孩子爬行是自然而然的事情,有什么好高兴的,可对我而言意义...
    小鱼凡凡阅读 426评论 0 2

友情链接更多精彩内容