C语言指针原来也可以这么的通俗易懂!
C語言是面向過程的,而C++是面向?qū)ο蟮?/p>
C和C++的區(qū)別:
C是一個結(jié)構(gòu)化語言,它的重點(diǎn)在于算法和數(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è)計”也能寫出非常好的東西。
相信對于學(xué)習(xí)過C語言的人來說指針一直是一個難點(diǎn)。其實(shí)C語言也就只有這么一個難點(diǎn),攻破了這個難點(diǎn),要做的就是不斷實(shí)踐了,畢竟想好學(xué)好一門語言不實(shí)踐是不行的。
每一個變量都有一個內(nèi)存位置,每一個內(nèi)存位置都定義了可使用連字號(&)運(yùn)算符訪問的地址,它表示了在內(nèi)存中的一個地址,我們先了解什么是內(nèi)存地址以及如何訪問它。看下面的實(shí)例,它將輸出定義的變量地址:
小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 815393859】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
當(dāng)上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
接下來讓我們看看什么是指針吧!
指針是一個變量,其值為另一個變量的地址,即內(nèi)存位置的直接地址。就像其他變量或常量一樣,您必須在使用指針存儲其他變量地址之前,對其進(jìn)行聲明。指針變量聲明的一般形式為:
type *name;
這里的type 是指針的基類型,它必須是一個有效的 C 數(shù)據(jù)類型,name 是指針變量的名稱。用來聲明指針的星號 * 與乘法中使用的星號是相同的。但是,在這個語句中,星號是用來指定一個變量是指針。以下是有效的指針聲明:
所有指針的值的實(shí)際數(shù)據(jù)類型,不管是整型、浮點(diǎn)型、字符型,還是其他的數(shù)據(jù)類型,都是一樣的,都是一個代表內(nèi)存地址的長的十六進(jìn)制數(shù)。不同數(shù)據(jù)類型的指針之間唯一的不同是,指針?biāo)赶虻淖兞炕虺A康臄?shù)據(jù)類型不同。
在此列出一些平常可能用到的指針例子
小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 815393859】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
接下來我們看下什么是函數(shù)指針
一個函數(shù)總是占用一段連續(xù)的內(nèi)存區(qū)域,函數(shù)名在表達(dá)式中有時也會被轉(zhuǎn)換為該函數(shù)所在內(nèi)存區(qū)域的首地址,這和數(shù)組名非常類似。我們可以把函數(shù)的這個首地址(或稱入口地址)賦予一個指針變量,使指針變量指向函數(shù)所在的內(nèi)存區(qū)域,然后通過指針變量就可以找到并調(diào)用該函數(shù)。這種指針就是函數(shù)指針。
函數(shù)指針的定義形式為:
returnType (*pointerName)(param list);
returnType 為函數(shù)返回值類型,pointerNmae 為指針名稱,param list 為函數(shù)參數(shù)列表。
注意:
( )的優(yōu)先級高于*,第一個括號不能省略,如果寫作returnType *pointerName(paramlist);
就成了函數(shù)原型,它表明函數(shù)的返回值類型為returnType *。
下面寫一個簡單的栗子:
編譯并運(yùn)行結(jié)果如下:
上面對msg函數(shù)進(jìn)行了調(diào)用,fun_p是一個函數(shù)指針。
總結(jié):
指針(Pointer)就是內(nèi)存的地址,C語言允許用一個變量來存放指針,這種變量稱為指針變量。指針變量可以存放基本類型數(shù)據(jù)的地址,也可以存放數(shù)組、函數(shù)以及其他指針變量的地址。
常見的指針含義:
小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 815393859】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
這些是C/C++能做的
服務(wù)器開發(fā)工程師、人工智能、云計算工程師、信息安全(黑客反黑客)、大數(shù)據(jù) 、數(shù)據(jù)平臺、嵌入式工程師、流媒體服務(wù)器、數(shù)據(jù)控解、圖像處理、音頻視頻開發(fā)工程師、游戲服務(wù)器、分布式系統(tǒng)、游戲輔助等
總結(jié)
以上是生活随笔為你收集整理的C语言指针原来也可以这么的通俗易懂!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 部队保密科是啥单位
- 下一篇: C语言深入理解!助你向大佬迈进!