天天看點

Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器

當我們把hello world寫完之後,我們就可以邁入c的大門了,今天就來講講基本的一些資料類型,函數之内的 我們先來看一張傳播久遠的圖檔‘
Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器
整形包括短整型、整形和長整形。
short a=1;
一般占4個位元組(32位),最高位代表符号,0表示正數,1表示負數,取值範圍是-2147483648~2147483647,在記憶體中的存儲順序是地位在前、高位在後,例如0x12345678在記憶體中的存儲如下: 位址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b 資料:  78      56        34      12 定義:用int關鍵字,舉例如下: int a=6;
long a=10;
浮點型包括單精度型和雙精度型。
浮點型,又稱實型,也稱單精度。一般占4個位元組(32位), float a=4.5; 資料:  00      00        90      40
一般占8個位元組(64位) double a=4.5; 位址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b  0x0012ff7c  0x0012ff7d  0x0012ff7e  0x0012ff7f 資料:  00      00        00      00      00        00      12      40
在各種不同系統中,字元類型都占一個位元組(8位)。定義如下: char c=’a’; 也可以用字元對應的ascii碼指派,如下: char c=97; 其實我們可以用一串代碼來闡述上面的意思
是不是清晰明了了,然而我們也是從java走過來的,這些基本上可以一筆帶過了,我們接下來看下c中的函數
這裡我們溫習一下上面說到的輸出函數

%d - int

%ld – long int

%lld - long long

%hd – 短整型

%c - char

%f - float

%lf – double

%u – 無符号數

%x – 十六進制輸出 int 或者long int 或者short int

%o - 八進制輸出

%s – 字元串

int len;

scanf(“%d”,&len);

因為這個java中沒有,是以這裡還是要提一下的
輸入函數大家也不陌生,在java中也有,java的代碼一般都是這樣的
這樣就可以在控制台輸入東西了,但是c就簡單多了,上面也提到了一個函數 scanf(“%d”,&len);,我們來看看具體怎麼用
這樣我們來運作一下:
Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器
這樣就ok了
記憶體這一塊,c是可以直接去操作的,這就是他的優勢,同時也是他比較難的一塊了,我們要好好的磨一磨了,記憶體位址就是記憶體的位址,記憶體中是以資料都是通過位址拿到的,就像findviewbyid一樣,我們來看個例子
我們通過這行代碼來擷取i的值以及i的位址,列印的結果
Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器
我們為了更形象的說明,打個比方,比如電腦的系統有32和64位區分,32位的系統最大支援的是4g記憶體,這是因為32位的系統記憶體總線的長度為32,也就是可以配置設定給記憶體作為位址的數字是2的32次方個
修改記憶體,就像打遊戲一樣,你的血量為100,其實就是在記憶體中定義一個變量,比如int blood = 100,這個blood在記憶體中開辟一個空間,指派為100,然後再進行其他操作,我們寫個小例子
邏輯應該看得懂吧,我們定義一個i,然後擷取他的記憶體位址,再讓他進行倒計時一樣的操作,這就模拟了打遊戲,比如一分鐘通關之内的遊戲,我們修改i的記憶體,達到記憶體修改器的效果
Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器
然後我們就可以下載下傳cheat engine,這個是記憶體修改器,和八門神器的原理差不多
Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器
下載下傳位址自己去網上找吧,具體的用法,大家可百度
Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器
當我們把記憶體當機了之後
Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器Android For JNI(二)——C語言中的資料類型,輸出,輸入函數以及操作記憶體位址,記憶體修改器
你就達到了修改遊戲的效果了,永遠不會到0,也就不會死了,這裡也隻是闡述一個原理哦!