C语言学习-指针入门与基本数据类型

C语言代码块结构

#include <stdio.h>
//<>寻找系统的资源
//“”寻找自己写的资源
//.h .hpp声明文件,头文件
// .c .cpp是实现文件
int main() {    
    printf("Hello,World!");    
    getchar(); //阻塞程序    
    return 0;
}

基本数据类型占位符

#include <stdio.h>

//基本数据类型
int main() {
    int i = 100;
    double d = 200;
    float f = 200;
    long l = 100;
    short s = 100;
    char c = 'd';
    //字符串
    char * str = "Ingen";

    //不能随便打印,需要使用占位符
    printf("i的值是: %d\n",i); //d 整数
    printf("d的值是: %lf\n",d); //long float
    printf("f的值是: %f\n",f); //float
    printf("l的值是: %d\n",l); //d 整数
    printf("s的值是: %d\n",s); //d 整数
    printf("c的值是: %c\n",c); //c char
    printf("c的值是: %s\n",str); //s string

    return 0;
}

基本类型占用的字节数

#include <stdio.h>

//基本数据类型占用字节数
int main() {

    printf("int 数据类型所占字节数:%d\n", sizeof(int)); //4
    printf("double 数据类型所占字节数:%d\n", sizeof(double)); //8
    printf("char 数据类型所占字节数:%d\n", sizeof(char)); //1

    return NULL; //NULL == 0
}

C、C++万物皆地址

#include <stdio.h>

//Java万物皆对象
//C C++万物皆指针
//Linux万物皆文件
int main() {
    //指针==地址
    //%p:地址输出的占位符
    int number1 = 1000000;
    printf("此number1的变量的地址是:%p\n",&number1);

    int number_int = 100;
    double number_double = 200;
    printf("number_int的值是:%d\n",number_int);
    printf("number_double的值:%d\n",number_double);

    //通过地址取值
    printf("number_int的值是:%d\n",*(&number_int));
    printf("number_double的值:%d\n",*(&number_double));

    //--------------难度-------------
    //int * 是指针类型,指针永远都是存放内存地址
    int * intP = &number_int;
    double * doubleP = &number_double;
    printf("number_int的值是:%d\n", *intP);
    printf("number_double的值是:%d\n",*doubleP);
    /**
     * 内存地址==指针
     * 指针==内存地址
     * int *(int类型的指针) , double *(double类型的指针)
     * 指针别名:指针变量 == 就是一个变量,只不过是一个指针的变量而已    intP、doubleP
     */
    return 0;
}
#include <stdio.h>

//函数不能写在main下面
//或者先声明
void change(int * p);

int main(){
    int i = 100;

    //p:只接收地址
    int * p = &i;

    i = 200;
    printf("i的值是:%d\n" ,i);
    
    //通过指针修改值
    *p = 300;
    printf("i的值是:%d\n" ,i);

    int j = 100;

//    change(j);
//    printf("j的值是:%d\n" ,&j);
    change(&j);
    printf("j的值是:%d\n" ,j);
}

//如果参数是这样,那传进来的j的地址和函数参数i的地址不一样,所以修改值无效
//void change(int i){
//    printf("j的值是:%d\n" ,&i);
//    i = 200;
//}

//参数改为地址,取出指针的内容,修改为200
//************C语言不允许函数重载*****************
void change(int * p){
    printf("j的值是:%d\n" ,&p);
    *p = 200; //取出p地址对应的值
}

常见面试题:
将两个变量值互换

#include <stdio.h>

//将两个变量互换值
void changeAction(int * a, int * b){
    //将a指针所存的值赋值给temp
    int temp = *a;
    //将b指针所存的值赋值给a指针所存的值
    *a = *b;
    //将b指针所存的值赋值为temp
    *b = temp;
}

int main() {
    int a = 100;
    int b = 200;
    changeAction(&a,&b);

    printf("交换后的效果:a = %d,b = %d\n",a,b);
}

NDK由哪些内容所组成

NDK是什么

NDK(C/C++) <-------------------> SDK(Java)性质是一样的
定义:Native Development Kit,是 Android的一个工具开发包
作用:快速开发C、 C++的动态库,并自动将so和应用一起打包成 APK
提供了把.so和.apk打包的工具
提供了交叉编译器,用于生成特定的CPU平台动态库
提供了很多很多的native支持,就相当于SDK提供了很多上层的支持一样

特点

运行效率高
代码安全性高
功能拓展性好
易于代码复用和移植

NDK能够做什么功能

NDK实用场景

打开支付宝APK,微信APK,等等,里面就有很多native库

CLion工具安装

引导安装流程:https://blog.csdn.net/tantion/article/details/84547356
下载CLion工具:https://www.jetbrains.com/clion/download
下载MinGW64: http://mingw-w64.org/doku.php/download
下载MinGW64: https://sourceforge.net/projects/mingw/postdownload 
CLion乱码问题解决:https://blog.csdn.net/weixin_43912367/article/details/104886495

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值