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能够做什么功能
打开支付宝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