Android NDK基础1:C_基本数据类型_输入输出_指针
Hello World
//引入头文件
//只有函数的声明,编译时会去找到函数的实现
#include <stdio.h>
void main() {
printf("hello world\n");
//system("mspaint");
system("pause");
}
带参数main函数
int main(int argc, char* argv) {
printf("hello world\n");
return 0;
}
基本数据类型
//基本数据类型:int short long float double char
/*
int %d
short %d
long %ld
float %f
double %lf
char %c
%x 十六进制
%o 八进制
%s 字符串
*/
#include <stdio.h>
void main() {
int i = 1;
printf("%d\n", i);
float f = 23.3;
printf("%f\n", f);
//基本数据类型所占的字节数
printf("int占%d字节\n", sizeof(int));
printf("char占%d字节\n", sizeof(char));
printf("float占%d字节\n", sizeof(float));
//循环
int n = 0;
for (; n < 10; n++) {
printf("%d\n", n);
}
//只有在C99版本下可行
for (n = 0; n < 10; n++) {
printf("%d\n", n);
}
//等待输入
system("pause");
}
输入输出
#define _CRT_SECURE_NO_WARNINGS //宏定义
#include <stdio.h>
//输入输出函数
void main() {
int i;
printf("请输入一个整数:");
//赋值
scanf("%d", &i); //控制台输入,&取地址符
//打印
printf("i的值为:%d\n", i);
system("pause");
}
指针
#include <stdio.h>
//指针存储的是变量的内存地址
//内存地址,系统给数据分配的编号(门牌号)
//Visual Studio内存地址的值查看:菜单->调试->窗口->内存->内存1->输入地址值和指定查看列数->在数据区右键选择显示格式
void main() {
int i = 90;
//指针变量,创建一个int类型的指针
int* p = &i; //p的值就是i这个变量的内存地址
printf("%#x\n", p);
float f = 89.5f;
//创建一个float类型的指针
float *fp = &f;
//%X是以大写十六进制打印,并且a~f打印出来的是大写的A、B、C、D、E、F
//如果是%#X,则会在打印的十六进制结果前面加上0X
printf("%#x\n", fp);
system("pause");
}
//变量名,对内存空间上的一段数据的抽象
void main() {
int i = 100;
//创建一个int类型的指针
int *p = &i;
printf("i的地址:%#x\n", &i);
//对指针p存的地址指向的变量进行操作,间接赋值,相当于 i = 200;
*p = 200;
printf("i的地址:%#x\n", &i);
system("pause");
}
//指针的指针
void main() {
int i = 100;
//创建一个int类型的指针
int *p = &i;
//输出地址
printf("i的地址:%#x\n", &i);
printf("p的地址:%#x\n", &p); //每个变量都有地址,当然包括指针变量
system("pause");
}
/*
//形参值改变,实参值不变
void change(int i) {
i = 200;
}
*/
//指针参数传递
void change(int* p) {
*p = 200;
}
//变量名,对内存空间上的一段数据的抽象
void main() {
int i = 100;
//创建一个int类型的指针
int *p = &i;
//change(p);
change(&i);
printf("i的值为:%d\n",i);
system("pause");
}
综合案例
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
void main() {
int time = 600;
printf("time:%#x\n", &time);
while (time > 0) {
time--;
printf("游戏时间剩余%d秒\n", time);
//睡眠
Sleep(1000);
}
system("pause");
}
外挂程序:使用DLL注入工具
生成DLL动态链接库:项目属性->配置属性->常规->项目默认值->配置类型:动态库(.dll)
#include <stdlib.h>
#include <stdio.h>
__declspec(dllexport) void go() {
//修改time变量的值
int *p = 0x2ff9d8;
*p = 999999;
}
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/android-ndk-basic-c-basic-data-type-input-output-pointer/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
Android NDK基础1:C_基本数据类型_输入输出_指针
Hello World
//引入头文件
//只有函数的声明,编译时会去找到函数的实现
#include <stdio.h>
void main() {
printf("hello world\n");
……
文章目录
关闭
共有 0 条评论