編輯:關於android開發
當我們把Hello World寫完之後,我們就可以邁入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;
地址:0x0012ff78 0x0012ff79 0x0012ff7a 0x0012ff7b
數據: 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;
其實我們可以用一串代碼來闡述上面的意思
#include
#include
main(){
//基本數據類型:char int float long short double signed unsigned
int i = 3;
char a = 'c';
//int的格式說明符 %d
printf("i的值為%d",i);
//char的格式說明符
printf ("a的值為%c",a);
system("pasue");
//通用輸出
system("通用輸出%d",sizeof(short));
// char int float long shortd的用法和JAVA類似
//我們提一下signed unsigned
//signed:有符號 unsigned 無符號
//舉個例子
signed int i = 3; //分正負
unsigned int i2 = 3; //不分正負
//字節長度char 1 int 4 float 4 long 4 short 2 double 8
}
是不是清晰明了了,然而我們也是從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中沒有,所以這裡還是要提一下的
//C的數組[]要寫在後面 ,而且這個 數組的長度為 8,因為他有一個結束符 \0
char str [] = {'a','n','d','r','o','i','d',};
char str [] = "可以輸入"; //9個字節長度
輸入函數大家也不陌生,在JAVA中也有,JAVA的代碼一般都是這樣的
import java.io.*;
public class Test1 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
String str = stdin.readLine();
System.out.println(str);
}
}
這樣就可以在控制台輸入東西了,但是C就簡單多了,上面也提到了一個函數 scanf(“%d”,&len);,我們來看看具體怎麼用
#include
#include
//輸入函數
main(){
printf("請輸入你的年齡:");
//定義一個變量
int age ;
//設置輸入的類型為int
scanf("%d",&age);
printf("你的年齡為:%d\n",age);
system("pause");
}
這樣我們來運行一下:
這樣就OK了
內存這一塊,C是可以直接去操作的,這就是他的優勢,同時也是他比較難的一塊了,我們要好好的磨一磨了,內存地址就是內存的地址,內存中所以數據都是通過地址拿到的,就像findviewbyid一樣,我們來看個例子
#include
#include
main(){
int i ; //當i聲明的時候,內存中開辟一個空間,四個字節,無值,分配一個地址
i = 5; //給地址一個值
printf("%d\n",i); //當我們要輸出這個i的時候其實是通過地址拿到這個5的
//獲取內存地址
printf("%#x",&i);
//讓窗口停留
int age ;
scanf("%d",&age);
}
我們通過這行代碼來獲取i的值以及i的地址,打印的結果
我們為了更形象的說明,打個比方,比如電腦的系統有32和64位區分,32位的系統最大支持的是4G內存,這是因為32位的系統內存總線的長度為32,也就是可以分配給內存作為地址的數字是2的32次方個
修改內存,就像打游戲一樣,你的血量為100,其實就是在內存中定義一個變量,比如int blood = 100,這個blood在內存中開辟一個空間,賦值為100,然後再進行其他操作,我們寫個小例子
#include
#include
main(){
//時間為60s過關
int time = 60;
int i ;
//打印i的地址
printf("%#x\n",&i);
for(i = time;i>=0;i--){
printf("剩余時間為%d\n",i);
//睡眠,達到遞減的效果
sleep(1000);
}
//讓窗口停留
int age ;
scanf("%d",&age);
}
邏輯應該看得懂吧,我們定義一個i,然後獲取他的內存地址,再讓他進行倒計時一樣的操作,這就模擬了打游戲,比如一分鐘通關之內的游戲,我們修改i的內存,達到內存修改器的效果
然後我們就可以下載Cheat Engine,這個是內存修改器,和八門神器的原理差不多
下載地址自己去網上找吧,具體的用法,大家可百度
當我們把內存凍結了之後
vcHL0N64xNPOz7e1xNCnufvBy6Os08DUtrK7u+G1vTCjrNKyvs2yu7vhy8DBy6Os1eLA79Ky1rvKx7L7yvbSu7j21K3A7cW2o6E8L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQgaWQ9"似乎節奏越來越快了下節我們學習下指針這樣就會對c有一個清晰的認識了早點把這塊學完對自己也是有莫大的好處的">似乎節奏越來越快了,下節我們學習下指針,這樣就會對C有一個清晰的認識了,早點把這塊學完,對自己也是有莫大的好處的!
BLE-NRF51822教程3-sdk程序框架剖析nordicBLE 技術交流群498676838本講為框架介紹,不會牽涉到太多代碼細節。 51822的官方SDK其實是
會話失效和PullToRefreshListView,pullrefreshlistview今天碰到一個一個會話失效的問題,從網上找了個方法可以處理http://blog
Android 異步Http框架簡介和實現原理,android框架在前幾篇文章中《Android 采用get方式提交數據到服務器》《Android 采用post方式提交數
【騰訊Bugly干貨分享】微信Tinker的一切都在這裡,包括源碼(一),buglytinker微信Tinker的一切都在這裡,包括源碼(一) 最近半年以來,Androi