zoukankan      html  css  js  c++  java
  • 八、android jni 之C语言基础

     *含义

    1.乘法 3*5 
    2.定义指针变量 int * p;//定义了一个名字叫p的变量,能够存放int数据类型的地址
    3.指针运算符,
        //如果p是一个已经定义好的指针变量则*p表示以p的内容为地址的变量

      打印数据类型

    复制代码
    %d  -  int
    %ld – long int
    %c  - char
    %f -  float
    %lf – double
    %x – 十六进制输出 int或者long int或者short int
    %o -  八进制输出
    %s – 字符串
    复制代码

      3、指针

    复制代码
    指针就是地址. 热身小程序 介绍指针
    int * p; //p是变量的名字, int * 表示p变量的数据类型是存放int类型的地址的数据类型
    //int * p; 不表示定义了一个名字叫做*p的变量
    // int * p; 应该这样理解: p是变量名, int *是数据类型 ,p变量的数据类型是int*
    //所谓int * 类型 实际就是存放int变量地址的类型    
    int i = 3;
    p = &i;
    /*1. p保存了i的地址, 因此p指向i
      2. p不是i,i也不是p,修改p的值不影响i的值,修改i的值也不会影响p的值
      3. 如果一个指针变量指向了某个普通变量, 则 *指针变量  就完全等同于  普通变量
                   例子:    
                        如果p是个指针变量,并且p存放了普通变量i的地址则p指向了普通变量i
    *p 就完全等同于 i 在所有出现*p的地方都可以替换成i 在所有出现i的地方都可以替换成*p *p 就是以p的内容为地址的变量
    */ j = *p; //等价于 j = i; printf("i = %d, j = %d ", i, j);
    复制代码

      4、指针与数组

    复制代码
    数组名,下标和指针的关系,指针变量的运算
    数组名
    int a[5] //a是数组名,5是数组的大小,元素个数
    int a[3][4] // 3行4列 a[0][0]就是数组的第一个元素
    Int b[5]
    A=b ;//错误
    
    一维数组名是个指针常量,它存放的是一维数组第一个元素的地址
    int a[5];
    int a[3][4];
    printf("%#X
    ",&a[0]);
    printf("%#X
    ",&a);
    下标和指针的关系
    如果p是个指针变量 则p[i] 等价于 *(p+i)
    复制代码

      5、动态分配内存

    复制代码
    动态内存分配问题
        传统数组的缺点
            1.数组长度必须实现指定,
            并且只能是常整数.
            int a[5];
            int len;
            int a[len];//error
            2.传统形式的数组,程序员没法手动释放空间
        数组一旦定义,系统为该数组分配的空间一直存在
        函数运行完毕,数组的空间就被释放
            3.数组的长度不能在函数运行中动态增加或者缩小    
            4.A函数定义的数组只有在A没执行完毕前被使用,a函数运行完毕后,a的数组就无法被其他函数使用
    复制代码
    复制代码
    # include <stdio.h>
    # include <malloc.h>  //不能省  malloc 是 memory(内存) allocate(分配)的缩写
    int main(void)
    {
        int i = 5; //分配了4个字节 静态分配   11 行
        int * p = (int *)malloc(4); //12行
            /*
                1. 要使用malloc函数,必须添加malloc.h这个头文件
                2. malloc函数只有一个形参,并且形参是整型
                3. 4表示请求系统为本程序分配4个字节
                4. malloc函数只能返回第一个字节的地址
                5. 12行分配了8个字节, p变量占4个字节, p所指向的内存也占4个字节
                6. p本身所占的内存是静态分配的, p所指向的内存是动态分配的       
            */
        *p = 5; //*p 代表的就是一个int变量, 只不过*p这个整型变量的内存分配方式和11行的i变量的分配方式不同
        free(p); //freep(p)表示把p所指向的内存给释放掉  p本身的内存是静态的,不能由程序员手动释放,p本身的内存只能在p变量所在的函数运行终止时由系统自动释放 
        printf("大家好!
    ");
        return 0;
    }
    复制代码

         6、函数指针

    1.定义int (*pf)(int x, int y);
    2.赋值 pf = add;
    3.引用 pf(3,5);
  • 相关阅读:
    oop klass

    广义表
    Huffman树
    二叉搜索树
    二叉树的前序、中序、后序、层序遍历
    循环链表解决约瑟夫环问题
    搭建局域网SVN代码服务器
    【CheckList】精简用例,提升执行效率,减少漏测(总结篇)
    测试资源不同时,如何有针对性的设计测试用例?
  • 原文地址:https://www.cnblogs.com/liyuzhao/p/3783572.html
Copyright © 2011-2022 走看看