C語(yǔ)言編程基礎(chǔ)及指針學(xué)習(xí)

C語(yǔ)言是面向過程的,而C++是面向?qū)ο蟮?/b>

C和C++的區(qū)別:

C是一個(gè)結(jié)構(gòu)化語(yǔ)言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)。

C++,首要考慮的是如何構(gòu)造一個(gè)對(duì)象模型,讓這個(gè)模型能夠契合與之對(duì)應(yīng)的問題域,這樣就可以通過獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說(shuō)C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”。

C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣。之所以說(shuō)C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”,而就語(yǔ)言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯(cuò)!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒有好的算法,一樣不行。而且,“C加上好的設(shè)計(jì)”也能寫出非常好的東西。

我們知道 , 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++庫(kù)交互 , 例如:FreeType ,OpenGL ,SQLite , 音視頻等等 。

小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

Android_Framework.png

做Android為什么需要學(xué)習(xí)C/C++ ?

1. 企業(yè)需要 , 現(xiàn)在大部分招聘 , 基本上都會(huì)要求會(huì)JNI2. 進(jìn)階需要 , 如果想要研究Android源碼 , 那么不會(huì)C/C++ , 行不通3. 音視頻時(shí)代到來(lái) (直播) , 音視頻處理 , 很大部分都需要C/C++完成(音視頻編解碼)

那么下面就一起開始學(xué)習(xí)C吧 ! let's go

C語(yǔ)言中的變量

編寫C的時(shí)候 , 首先我們需要引入頭文件 , 就像我們寫JAVA的時(shí)候 , 需要引入包一樣 , 但C語(yǔ)言他不會(huì)幫你自動(dòng)引入 , 所有頭文件 , 必須你自己手動(dòng)引入, 最常用的兩個(gè)頭文件是

#include

C語(yǔ)言中的xxx.h的頭文件 , 里面只有函數(shù)聲明 , 沒有函數(shù)實(shí)現(xiàn) , 函數(shù)實(shí)現(xiàn)都在xxx.c里面 。

在學(xué)習(xí)一門語(yǔ)言的時(shí)候 , 我們最先了解的就是變量 , 變量的定義 , 變量所占大小 , 下面我們看看C語(yǔ)言中的變量類型 , 和變量大小 。 和JAVA不同的是 , C語(yǔ)言變量的大小 , 是隨著操作系統(tǒng)變化而變化的 , 不同的操作系統(tǒng) , 變量的大小可能不一樣 。

下面我們來(lái)查看C語(yǔ)言的變量類型和變量類型的大?。?/p>

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ù)的時(shí)候 , 需要標(biāo)明輸出數(shù)據(jù)的類型 , 例如:

int

類型是

%d

,

char

類型是

%c

,

表示換行 等等:

/*

小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

C語(yǔ)言中的指針

C語(yǔ)言中最重要的 , 就是指針了 , 沒有指針 , 就沒有高級(jí)語(yǔ)言的那些強(qiáng)大的特性 , 說(shuō)到指針我們就會(huì)想到內(nèi)存操作 , 指針就是為了操作內(nèi)存而生 。

下面我們來(lái)看看 , 指針的簡(jiǎn)單使用:

// 定義一個(gè)變量i , i的值是100

指針存儲(chǔ)的是變量的內(nèi)存地址 , 也只能存儲(chǔ)內(nèi)存地址 , 直接賦值整數(shù)值也會(huì)被轉(zhuǎn)化成內(nèi)存地址

下面我們來(lái)看一個(gè)完整的例子:

void main() { // 定義一個(gè)變量i , i的值是100

如果使用的是Visual Studio開發(fā)工具 , 可以在在代碼中打一個(gè)斷點(diǎn),在菜單欄

調(diào)試->窗口->內(nèi)存->內(nèi)存1

, 將打印出的變量地址值 , 在輸入欄中填入 , 按回車鍵進(jìn)行地址搜索 。如果是一堆問號(hào)或者亂碼 , 則在該窗口點(diǎn)擊右鍵 ,在右鍵菜單中, 選擇按照你打印的變量的進(jìn)制位顯示 , 例如int 就按4進(jìn)制位顯示 , 再在右鍵菜單欄中找到帶符號(hào)顯示 , 基本上就能看到變量的值了 。

上述的例子中 , 如果我們想修改i的值 , 除了給i直接賦值外 , 還可以通過指針來(lái)操作,如下:

定義一個(gè)變量i , i的值是100

指針也是一個(gè)變量 , 如上

int* p = &i

, p就是一個(gè)指針變量 , 這個(gè)變量存儲(chǔ)的就是i變量的內(nèi)存地址 , 通過

printf("p的值:%#x ",p) printf("i的地址:%#x ",&i)

, 我們可以打印出指針變量p的值和i變量地址 , 可以看到兩個(gè)值是一致的 。 那么指針和普通變量有什么區(qū)別呢 ? 指針變量的強(qiáng)大之處就在于 , 他能通過內(nèi)存地址去操作對(duì)應(yīng)內(nèi)存地址的內(nèi)容 。上述例子中

*p = 20

小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

, 就是操作i變量的地址 , 將i變量中的100修改為20 。

我們了解了指針的概念和基本使用 , 下次我們就要了解 , 二級(jí)指針 , 多級(jí)指針 , 函數(shù)指針 等等 , 由此 , 我們可以看出 , C語(yǔ)言的世界, 就是一個(gè)指針的世界 , 就如同JAVA的世界 , 就是一個(gè)對(duì)象的世界一樣 , 兩者都是其各自的核心 , 所以我們一定要把指針弄懂 , 學(xué)透 。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容