JNI,NDK开发筑基,C语言开发,地址与指针

C语言开发,地址与指针

一.NDK

1.NDK(C/C++),SDK(java)

2.Native Development Kit,Android的开发工具包。

3.开发c,c++,so打包进apk,.so,.apk打包。

二.C语言基本数据类型

demo

#include <stdio.h>

int main() {
//    基本数据类型
    int i = 100;
    double a = 200.0;
    float c = 300.0;
    long d = 100;
    short s = 100;
    char f = 'd';
    //字符串
    char *str = "qfghh";
    //需要占位
    printf("%d\n", i);
    //lf==long float
    printf("%lf\n", a);
    //f==float
    printf("%f\n", c);
    //d==整形
    printf("%d\n", d);

    printf("%d\n", s);
    //c==char
    printf("%c\n", f);
    printf("%s\n", str);

    printf("1111");


    return 0;
}

三.字节数

//
// Created by MagicBook on 2023-09-30.

#include <stdio.h>

int main() {
    //几个字节==4
    printf("字节数 %d\n", sizeof(int));
    //8
    printf("字节数 %d\n", sizeof(double ));
    //1
    printf("字节数 %d\n", sizeof(char ));


    return 0;
}

四.c/c++指针,地址就是指针

//
// Created by MagicBook on 2023-09-30.
//
#include <stdio.h>

int main() {
    //main函数进栈,a变量加载,内存地址,000000f05b9ff70c,变量a指向这个地址。
    //main进栈,别名b,值为100,内存地址:0x0011,&b,取出内存地址0x0011,*取出内存地址所对应的值。
    int b = 100;
    double c = 200.0;

    printf("%d\n", b);
    printf("%lf\n", c);

    //指针取值
    //变量都是地址,地址获取值
    //*取出地址所对应的值
    printf("%d\n", *(&b));
    printf("%f\n", *(&c));

    //pInt指针类型,&b存地址,指针是指向内存地址的
    int *pInt = &b;
    double *pDouble = &c;
    //*pInt取出pInt内存地址对应的值
    //指针==内存地址
    //内存地址==指针
    // int * int类型的指针
    //指针别名,变量   就是定义的变量,指针类型的变量。
    printf("%d\n", *pInt);
    printf("%f\n", *pDouble);

    return 0;

}

五.指针使用细节

//
// Created by MagicBook on 2023-10-18.
//
#include <stdio.h>

//接收内存地址,就是指针
void test3(int *a, int *b) {
    //a的内存地址所对应的值
    int tmp = *a;
    //a内存地址的值赋值修改为b内存地址的值
    *a = *b;
    *b = tmp;
}

int main() {
    //
    int a = 1;
    int b = 2;

    test3(&a, &b);
    printf("%d, %d\n", a, b);
    return 0;
}
//
// Created by MagicBook on 2023-10-18.
//
#include <stdio.h>

void test(int i) {
    //这个i会重新开辟地址0x0022
    //编译器构建形式参数,跟我们外面传进来的i没有关系,所以修改值不会影响到外面的值。
    i = 11111;
    printf("change %p\n", &i);
}
void test2(int *i){
    *i = 4444;
//    printf("change %p\n",i);
}

int main22() {
    //内存地址假设0x0011
    int i = 222;
    //test函数进栈,
    test(i);

    //传地址,
    test2(&i);
    //输出还是222
    printf("%p\n", &i);
    return 0;
}
in22() {
    //内存地址假设0x0011
    int i = 222;
    //test函数进栈,
    test(i);

    //传地址,
    test2(&i);
    //输出还是222
    printf("%p\n", &i);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值