C語言是面向過程的尝江,而C++是面向?qū)ο蟮?/b>
C和C++的區(qū)別:
C是一個結(jié)構(gòu)化語言跃捣,它的重點在于算法和數(shù)據(jù)結(jié)構(gòu)近顷。C程序的設(shè)計首要考慮的是如何通過一個過程,對輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)久妆。
C++,首要考慮的是如何構(gòu)造一個對象模型跷睦,讓這個模型能夠契合與之對應(yīng)的問題域筷弦,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣抑诸。之所以說C++比C更先進(jìn)烂琴,是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”。
C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣蜕乡。之所以說C++比C更先進(jìn)奸绷,是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”,而就語言本身而言层玲,在C中更多的是算法的概念号醉。那么是不是C就不重要了反症,錯!算法是程序設(shè)計的基礎(chǔ)畔派,好的設(shè)計如果沒有好的算法铅碍,一樣不行。而且线椰,“C加上好的設(shè)計”也能寫出非常好的東西胞谈。
我們知道 , Android系統(tǒng)是基于linux開發(fā) 憨愉, 采用的是linux內(nèi)核 烦绳, Android APP開發(fā)大部分也要和系統(tǒng)打交道 , 只是Android FrameWork 幫我們屏蔽了系統(tǒng)操作 莱衩, 我們從Android 系統(tǒng)的分成結(jié)構(gòu)可以看出 爵嗅, Android FrameWork是通過JNI與底層的C/C++庫交互 , 例如:FreeType 笨蚁,OpenGL 睹晒,SQLite , 音視頻等等 括细。
小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九伪很,四七零腹忽,五九六 】景东,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)揍移!裙內(nèi)有開發(fā)工具览濒,很多干貨和技術(shù)資料分享呆盖!
Android_Framework.png
做Android為什么需要學(xué)習(xí)C/C++ ?
1. 企業(yè)需要 , 現(xiàn)在大部分招聘 贷笛, 基本上都會要求會JNI2. 進(jìn)階需要 应又, 如果想要研究Android源碼 , 那么不會C/C++ 乏苦, 行不通3. 音視頻時代到來 (直播) 株扛, 音視頻處理 , 很大部分都需要C/C++完成(音視頻編解碼)
那么下面就一起開始學(xué)習(xí)C吧 汇荐! let's go
C語言中的變量
編寫C的時候 , 首先我們需要引入頭文件 洞就, 就像我們寫JAVA的時候 , 需要引入包一樣 掀淘, 但C語言他不會幫你自動引入 旬蟋, 所有頭文件 , 必須你自己手動引入革娄, 最常用的兩個頭文件是
#include
C語言中的xxx.h的頭文件 咖为, 里面只有函數(shù)聲明 秕狰, 沒有函數(shù)實現(xiàn) , 函數(shù)實現(xiàn)都在xxx.c里面 躁染。
在學(xué)習(xí)一門語言的時候 鸣哀, 我們最先了解的就是變量 , 變量的定義 吞彤, 變量所占大小 我衬, 下面我們看看C語言中的變量類型 , 和變量大小 饰恕。 和JAVA不同的是 挠羔, C語言變量的大小 , 是隨著操作系統(tǒng)變化而變化的 埋嵌, 不同的操作系統(tǒng) 破加, 變量的大小可能不一樣 。
下面我們來查看C語言的變量類型和變量類型的大斜⑧隆:
void main() { int i = 90; printf("int 所占字節(jié):%d ", sizeof(int)); printf(" i 的值:%d ", i); short sh = 32; printf("short 所占字節(jié)數(shù):%d ", sizeof(short)); printf("sh 的值:%d ", sh); long l = 12312; printf("long 所占字節(jié)數(shù):%d ", sizeof(long)); printf("l 的值:%ld ", l); float f = 12.3; printf("float 所占字節(jié)數(shù):%d ", sizeof(float)); printf("f 的值:%f ", f); double d = 234.345; printf("double 所占字節(jié)數(shù):%d ", sizeof(double)); printf("d 的值:%lf ", d); char c = 'c'; printf("char 所占字節(jié)數(shù):%d ", sizeof(char)); printf("c 的值:%c ", c); // 輸出字符串
在使用
printf()
函數(shù)的時候 范舀, 需要標(biāo)明輸出數(shù)據(jù)的類型 , 例如:
int
類型是
%d
,
char
類型是
%c
,
表示換行 等等:
/*
小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九了罪,四七零锭环,五九六 】,無論你是大牛還是小白泊藕,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)辅辩!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享娃圆!
C語言中的指針
C語言中最重要的 玫锋, 就是指針了 , 沒有指針 讼呢, 就沒有高級語言的那些強(qiáng)大的特性 撩鹿, 說到指針我們就會想到內(nèi)存操作 , 指針就是為了操作內(nèi)存而生 吝岭。
下面我們來看看 三痰, 指針的簡單使用:
// 定義一個變量i , i的值是100
指針存儲的是變量的內(nèi)存地址 , 也只能存儲內(nèi)存地址 吧寺, 直接賦值整數(shù)值也會被轉(zhuǎn)化成內(nèi)存地址
下面我們來看一個完整的例子:
void main() { // 定義一個變量i , i的值是100
如果使用的是Visual Studio開發(fā)工具 窜管, 可以在在代碼中打一個斷點,在菜單欄
調(diào)試->窗口->內(nèi)存->內(nèi)存1
, 將打印出的變量地址值 稚机, 在輸入欄中填入 幕帆, 按回車鍵進(jìn)行地址搜索 。如果是一堆問號或者亂碼 赖条, 則在該窗口點擊右鍵 失乾,在右鍵菜單中常熙, 選擇按照你打印的變量的進(jìn)制位顯示 , 例如int 就按4進(jìn)制位顯示 碱茁, 再在右鍵菜單欄中找到帶符號顯示 裸卫, 基本上就能看到變量的值了 。
上述的例子中 纽竣, 如果我們想修改i的值 墓贿, 除了給i直接賦值外 , 還可以通過指針來操作蜓氨,如下:
定義一個變量i , i的值是100
指針也是一個變量 聋袋, 如上
int* p = &i
, p就是一個指針變量 , 這個變量存儲的就是i變量的內(nèi)存地址 穴吹, 通過
printf("p的值:%#x ",p) printf("i的地址:%#x ",&i)
幽勒, 我們可以打印出指針變量p的值和i變量地址 , 可以看到兩個值是一致的 港令。 那么指針和普通變量有什么區(qū)別呢 啥容? 指針變量的強(qiáng)大之處就在于 , 他能通過內(nèi)存地址去操作對應(yīng)內(nèi)存地址的內(nèi)容 缠借。上述例子中
*p = 20
小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九干毅,四七零,五九六 】泼返,無論你是大牛還是小白硝逢,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具绅喉,很多干貨和技術(shù)資料分享渠鸽!
, 就是操作i變量的地址 柴罐, 將i變量中的100修改為20 徽缚。
我們了解了指針的概念和基本使用 , 下次我們就要了解 革屠, 二級指針 凿试, 多級指針 , 函數(shù)指針 等等 似芝, 由此 那婉, 我們可以看出 , C語言的世界党瓮, 就是一個指針的世界 详炬, 就如同JAVA的世界 , 就是一個對象的世界一樣 寞奸, 兩者都是其各自的核心 呛谜, 所以我們一定要把指針弄懂 在跳, 學(xué)透 。