當前位置:首頁 » 編程語言 » c語言指針相當於匯編的什麼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言指針相當於匯編的什麼

發布時間: 2022-09-13 03:08:44

A. 論述c語言中指針的概念和作用,並舉例說明

1、指針概念:變數的地址(計算機內存位元組的編號)叫做指針,存放變數地址的變數叫指針變
量,
簡言之,指針是用來存放地址的。
2、作用:指向這個變數或數組的首地址,是變數的間接引用方式。其值如果改變,變數的值或數組元素的值也會跟著改變。程序對變數的操作實際上是對變數所在的存儲空間讀取和寫入數據。方便對變數的操作。
舉例說明:
int
a=3;/*定義一個整型變數a,並賦初值3*/
int
*p;/*定義一個指針變數P*/
p=&a;/*讓p指向a的首地址,也就是a的地址*/
程序為a分配一個2個位元組的存儲單元,假如2個位元組的地址分別為(ABCD1和ABCD2,唯一),那麼p裡面放的值就是ABCD1,不是3。這時可通過p直接引用a,實際上*p=3。以後不管a存放在內存中的哪個地方,只用通過調用p就可以引用a。這時如果令*p=4,則最後的a值也為4。對於數組,指針是指向數組的首地址。

B. C語言的指針相當於匯編語言的什麼指令

匯編沒有指針的命令,只有定址命令dword ptr【地址】,c語言的指針其實是定址兩次而已。

C. 匯編里有指針這種概念嗎

其實C語言中的指針就是保存的它所指向的東西的地址
所以,只要你在一個變數或是寄存器中保存的是另一個變數或是結構的地址,那麼它就是指針了
而對於匯編來說,我們經常會需要在寄存器或是變數中保存一些東西的地址
所以,這個時候這個寄存器或是變數就相當於C語言中的指針了。

D. 匯編語言中指針的作用

c語言中的指針和匯編語言中的寄存器間接定址差不多。c語言中變數的指針就是該變數的地址。如指針變數p的地址為2000H,則*p所訪問的是地址2000H的存儲單元,x=*p,實現把地址2000H的存儲單元的內容送給變數x。

E. C語言和匯編語言的關系

程序員編寫的C語言代碼,首先要經過C語言編譯器,生成匯編代碼,這個過程稱為編譯階斷,當C語言編譯器生成匯編代碼後,再調用匯編器來將匯編代碼編譯成匯編指令。

這是一種站在巨人肩人的作法,最早的C++編程語言也是這樣的實現方法,只不過那時候叫Cfront程序,Cfront程序的作用是將C++代碼轉換成C語言代碼,類似於一個文本處理器,然後再調用C語言編譯器,將C源碼編譯成匯編代碼,然後再調用匯編器將匯編代碼編譯成機器碼。

這個過程,在Windows平台上不容易操作,但是在Linux平台上很容易看到。以gcc這款c語言編譯器為例,它實際上是四個小程序。
cp: c語言預處理程序,有它負責進行預處理操作。
cc: C語言編譯器,它負責將C源碼編譯成匯編代碼。
as: 匯編器,它負責將匯編代碼編譯成機器碼,一般使用gcc test.c這樣的命令編譯C語言時,會生成一個a.out的程序,它實際上指的就是as ouput,即匯編器輸出文件。
link: 鏈接器,它負責將匯編器輸入的機器碼和庫打包成一個操作系統可以運行的可執行文件,在Linux上的可執行文件格式是ELF格式,這個格式的實現是有鏈接器來完成的。

F. C語言中指針是不是用匯編的間接定址實現的

只能說匯編語言中的間接定址類似於C語言中的指針,但兩者實現方式不一定就是能畫等號的。

G. 匯編語言和c語言區別

匯編語言與C語言的區別:

1、在匯編語言中,為一個處理器編寫的程序不能在另一種類型的處理器上運行。在C語言程序中,程序獨立於處理器類型運行。

2、匯編語言代碼的性能和准確性優於C代碼。

3、C語言必須提供額外的指令來在計算機上運行代碼。

4、匯編語言代碼比C代碼難以理解和調試。

5、 一個或兩個C語言語句擴展為許多匯編語言代碼。

6、匯編語言可以比C別更好地進行通信某些類型的硬體操作只能通過匯編語言執行。

7、在匯編語言中,我們可以直接讀取物理地址上的指針,這在C別是不可能的。

8、在匯編語言中使用位更容易。

9、匯編程序用於在匯編語言中轉換代碼,而編譯器用於在C編譯代碼。

10、C語言的可執行代碼大於匯編語言代碼,因此執行時間較長。

11、由於長的可執行代碼,C程序的效率低於匯編語言程序。

12、與匯編程序員相比,C語言程序員不需要知道處理器中的寄存器等硬體細節。

13、最C的語言代碼首先自動轉換為匯編代碼。

H. C語言的指針有什麼用

C裡面函數都只能返回一個值,如果你的函數要返回兩個值,那就要用指針了,把變數地址傳進函數,然後把希望通過函數操作後想要的值存進傳進來的變數地址裡面。當然函數可以返回數組,結構體,但是你看多了你就知道,沒有人會這么做的,都返回指針。試想如果我有一個1萬個元素的數組,你會把它整個地傳進一個函數裡面或者整個地返回出來嗎?C語言裡面都是傳值的,就是說傳進函數的參數值首先被復制一邊賦值給形式參數,你想想1萬個元素,夠嗆咯!但是有指針就好多了,我們可以把指針(數組的第一個元素的地址)傳進函數裡面,有了開始地址,函數就知道東西在哪兒,就直接去那兒操作就可以了。單憑這一點,你就可以知道指針的威力,當然你也知道了指針一個很大的用處就是用於函數之間參數的傳遞與返回。指針就相當於一個代理一樣,通過代理你知道了你要的東西在哪兒,你去那個地方就可以了,而不是需要把東西整個地板到你面前。

I. 匯編語言與C語言有什麼區別

1、操作復雜程度的不同

c語言,與匯編語言相比,c語言在更加接近人的一般思維,因此在程序的設計過程中比較容易操作,此外在進行一些復雜的操作,運算時,c語言比匯編就要簡單很多,尤其是c語言中的豐富的函數庫,可以直接實現一些原本很復雜的功能,並且從代碼量來說任意一個c語言程序,通過反匯編之後變成匯編語言程序,其長度都可能要增加好幾倍。

2、使用范圍的不同

c語言程序的事件將會只是編寫匯編語言程序的幾分之一,從編寫程序的效率上來說c語言無疑更高,此外C語言是高級程序語言因此可移植性較好,不太受到到硬體設備的限制。

在實現一個功能時,匯編語言可以直接奔著目標去,而C語言則是給你提供了一種對於對於這種問題的普遍處理辦法,不具有針對性,因此會有許多多餘的在這個問題中不需要的過程,因此可能回事程序較大,運行較慢。相對與匯編語言,C語言更加適合一些較大型項目的開發。

3、運行的速度和效率不同

程序沒有了匯編語言計算機直接就無法運行,因為匯編語言是基於計算機底層硬體的編程,通過它實現了對cpu,內存,硬碟以及外界設備的直接操作,因為直接所以匯編語言在程序的大小,執行的速度與效率方面幾乎無可比擬,但是也是因為直接,所以匯編程序難以移植,且完成相同的操作代碼量太大,在進行一些大的項目是,單獨使用匯編進行編程幾乎不可能實現。

J. c語言指針的概念

指針是C語言中廣泛使用的一種數據類型。 運用指針編程是C語言最主要的風格之一。利用指針變數可以表示各種數據結構; 能很方便地使用數組和字元串; 並能象匯編語言一樣處理內存地址,從而編出精練而高效的程序。指針極大地豐富了C語言的功能。 學習指針是學習C語言中最重要的一環, 能否正確理解和使用指針是我們是否掌握C語言的一個標志。同時, 指針也是C語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多編程,上機調試。只要作到這些,指針也是不難掌握的。

指針的基本概念 在計算機中,所有的數據都是存放在存儲器中的。 一般把存儲器中的一個位元組稱為一個內存單元, 不同的數據類型所佔用的內存單元數不等,如整型量佔2個單元,字元量佔1個單元等, 在第二章中已有詳細的介紹。為了正確地訪問這些內存單元, 必須為每個內存單元編上號。 根據一個內存單元的編號即可准確地找到該內存單元。內存單元的編號也叫做地址。 既然根據內存單元的編號或地址就可以找到所需的內存單元,所以通常也把這個地址稱為指針。 內存單元的指針和內存單元的內容是兩個不同的概念。 可以用一個通俗的例子來說明它們之間的關系。我們到銀行去存取款時, 銀行工作人員將根據我們的帳號去找我們的存款單, 找到之後在存單上寫入存款、取款的金額。在這里,帳號就是存單的指針, 存款數是存單的內容。對於一個內存單元來說,單元的地址即為指針, 其中存放的數據才是該單元的內容。在C語言中, 允許用一個變數來存放指針,這種變數稱為指針變數。因此, 一個指針變數的值就是某個內存單元的地址或稱為某內存單元的指針。圖中,設有字元變數C,其內容為「K」(ASCII碼為十進制數 75),C佔用了011A號單元(地址用十六進數表示)。設有指針變數P,內容為011A, 這種情況我們稱為P指向變數C,或說P是指向變數C的指針。 嚴格地說,一個指針是一個地址, 是一個常量。而一個指針變數卻可以被賦予不同的指針值,是變。 但在常把指針變數簡稱為指針。為了避免混淆,我們中約定:「指針」是指地址, 是常量,「指針變數」是指取值為地址的變數。 定義指針的目的是為了通過指針去訪問內存單元。

既然指針變數的值是一個地址, 那麼這個地址不僅可以是變數的地址, 也可以是其它數據結構的地址。在一個指針變數中存放一
個數組或一個函數的首地址有何意義呢? 因為數組或函數都是連續存放的。通過訪問指針變數取得了數組或函數的首地址, 也就找到了該數組或函數。這樣一來, 凡是出現數組,函數的地方都可以用一個指針變數來表示, 只要該指針變數中賦予數組或函數的首地址即可。這樣做, 將會使程序的概念十分清楚,程序本身也精練,高效。在C語言中, 一種數據類型或數據結構往往都佔有一組連續的內存單元。 用「地址」這個概念並不能很好地描述一種數據類型或數據結構, 而「指針」雖然實際上也是一個地址,但它卻是一個數據結構的首地址, 它是「指向」一個數據結構的,因而概念更為清楚,表示更為明確。 這也是引入「指針」概念的一個重要原因。