JNI之C语言简单回顾

一.C语言基本数据类型:
 c语言中  char, int, float, double, signed, unsigned, long, short and void
// java 中的8大本数据类型和他们的长度
// byte 1 char 2 short 2 int 4 long  8 double  8 float 4 boolean 1

// 在c99标准的c语言.没有 byte 类型 没有boolean 类型
// 在c语言里面 0表示的是假 非0表示的是真
// sizeof(); 获取某种数据类型的长度 , 接受一个参数(数据类型)

// c语言中的char类型是1个字节  java里面char是两个字节
// c语言中的char的长度 和 java中的byte的长度相同 ,所以可以用 c 语言中的char类型 表示 java中的byte类型
// c语言中的int 和 java中的int在内存中的长度相同 所以java的int 和c语言中的int 可以互相代替使用.
 
// c语言中long类型是4个字节 java中的long类型是8个字节


二. C 语言的输入函数      
//scanf();
// java 语言里面有一个数据类型 叫String 字符串
// c语言里面 是没有String类型
// c语言表示一个字符串  定义一个字符的数组
// 利用scanf %s 的方式 可以方便的从键盘获取一个字符串

三。 指针入门:
// 指针代表的就是一个内存地址. 内存地址 可以用一个指针来表示.
// 地址就是一块内存空间的编号,通过这个编号 我们可以使用以一块内存空间.

// 指针变量:  可以存放指针类型(内存地址数据)数据的变量 指针变量.
          // 使用* 来表示指针变量.
          // int*  代表的就是一个表示int类型数据地址的变量
      
补充*号的几种作用.
       // 3*5  1.*号的第一种作用 代表的是相乘的操作.
       //        2.在一个数据类型的后面 跟上一个*号 代表就是这种数据类型的指针变量
       //        3. 在一个指针变量前面加上一个*号 代表的是 访问这个指针变量里面存放的地址里面存储的内容.       
函数指针
int (*pf) ( int x, int y); // 定义一个函数的指针 这个函数 返回值为int 接受两个int类型的参数

四.指针使用的常见错误:
指针的常见错误一:
 
 
      //指针变量的类型 要跟 存放数据的类型 必须要对应
       // int类型的变量的地址 要用int*来表示.
       // float类型变量的地址 要用float* 来表示.
       
指针的常见错误二:
         int i = 5;
       int* p ;
       printf("*p=%d\n",*p);  // 如果p变量没有进行初始化, 里面存放的是一个垃圾值 混乱值.
                               // *p 访问了一块不知道的内存  (野指针)                    
        
        // 指针变量 未经赋值 ,不能使用.
        // 如果修改一个野指针指向的内存空间,可能会出现严重的错误.

        //window操作系统 提供了一些api  提升父进程的权限.

五: 指针的长度
    
//所有数据类型的指针长度 都是4个字节
       //32位的操作系统, 要想表示一个地址 2的32次方个地址.
       //指针类型的 作用主要就是在指针运算的时候 起作用. 在获取指针所指向的数据的时候 起作用.
六. 多级指针
       
七. 手动分配内存
栈内存会被系统自动回收,不能被手动回收
堆内存不会被系统自动回收,需要由程序员手动回收



八. 结构体,联合体和枚举,自定义类型
结构体:
struct Student           //此写法为最标准写法
{
    int age;  // 4
    float score; // 4
    long  id;// 4
    char c;  //  为了方便处理,也分配为4
    
    //不同的编译器 处理的结果可能 不同
} ;


三种写法:

第一种
struct Student
{
  int age;
  float score;
  char sex;
}

第二种
struct Student2
{
 int age;
 float score;
 char sex;
} st2;

第三种
struct
{
 int age;
 float score;
 char sex;
} st3

联合体
union {double d; long i; int k; char ii; } mix;

typeof给一个变量定义一个别名
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值