當前位置:首頁 » 文件傳輸 » 指針訪問物理地址
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

指針訪問物理地址

發布時間: 2022-12-28 01:13:04

c語言如果用指針去使用變數,和直接使用變數有什麼不同。

指針是C語言中的一個重要概念,也是C語言的一個重要特色。正確而靈活的運用它,可以有效地表示復雜的數據結構;能動態分配內存;方便地使用字元串;有效而方便地使用數組;在調用函數時能獲得一個以上的結果;能直接處理內存單元地址等……——《C程序設計(第三版)》
你在舉例的時候說的直接引用數據的時候是幾乎沒有區別的,數組其實也相當於一種指針的應用,只不過是規定好了的。但比如用在排序上,同樣是排序(從大到小)數據1和2,不用指針:
#include
void main()
{
int a,b;
scanf("%d %d",&a,&b);
if(a<b)
{
a=a+b;
b=a-b;
a=a-b;
}
}
原來輸入的時候是a=1,b=2,程序運行完是a=2,b=1;
而如果運用指針:
#include
void main()
{
int *p1,*p2,*p,a,b;
scanf("%d %d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
{
p1=&b;
p2=&a;
}
}
排序完成後,p1指向較大的數2,p2指向較小的數1,而a仍然等於1,b=2,它們的值是不變的。如果在另外的程序中同樣調用了這兩個變數,用指針就不會對其產生影響,這就是指針作用的一個方面。指針還有很多其它方面的作用,這也是c語言的一個特色,建議你好好地學一下,很有用的。

Ⅱ 為什麼C語言能直接訪問物理地址而其他高級語言不行

C語言有指針,可以直接訪問內存地址,其他高級語言都沒有指針的概念,用引用的概念代替了。因為指針的使用不安全,容易出錯,內存泄漏等等。
但是C語言C++ 有指針,所以更快,更高效。其他高級語言沒有C更快,但是更簡單,更安全。

Ⅲ C語言允許直接訪問物理地址嗎

C本來就是最接近硬體的高級語言,操作物理地址完全沒問題,現在很多嵌入式開發也是用C的

Ⅳ 指針指向的地址是什麼地址

在windows下是虛擬地址(邏輯地址)。在不同的機器上也有所不同:在8086實模式下是開啟了分段機制,指針是20位形式的;保護模式下開啟分頁分段,指針指向本進程的32位邏輯地址,由CPU負責將其轉換成物理地址,而轉化過程中的頁表由操作系統維護,處理換頁也有操作系統承擔

Ⅳ c語言問題。 用指針可以直接修改物理內存地址的值 但可不可以修改其他應用程序的內存地址,就像用wi

應用程序連「物理內存」都碰不到

程序在操作的「數據」到底是什麼?是真正存儲在內部存儲器中,還是放在外部存儲器(例如硬碟文件)?說起來是很難被一般程序預測的。如果操作系統覺得合適,就可以把內存中的內容「交換」到硬碟上的「頁面文件」中——因此數據可能根本沒有存儲在「內存」中

即使是存儲在內部存儲器中,又是存儲在哪裡?是一級緩沖區?二級緩沖區?數據是只有一份,還是被製作了副本,把兩個副本分別交給兩個處理器,待處理完畢再進行匯總——因此只修改其中一個根本沒用?

這些硬體的細節,程序根本接觸不到。即使其中有些工作真的不能僅僅只靠硬體完成,也是給操作系統處理掉了。更高層的程序根本不用考慮這種繁雜的細活

Ⅵ C語言中,如何讓指針指向一個已知地址

讓指針指向一個已知地址,必須轉換類型,在地址前面加上int*,否則不成功。
指針(Pointer)是編程語言中的一個對象,利用地址,它的值直接指向(points
to)存在電腦存儲器中另一個地方的值。由於通過地址能找到所需的變數單元,可以說,地址指向該變數單元。因此,將地址形象化的稱為「指針」。意思是通過它能找到以它為地址的內存單元。

Ⅶ 關於C語言的指針與虛擬地址,物理地址的關系問題

由於WINDOWS是一個實時多任務的操作系統,所以系統為每個進程(以32位進程為例)4G內存,所以每個進程看起來都擁有4GB的內存,但是該內存為虛擬內存空間,如果空間不夠還會使用硬碟進行虛擬。4G的內存,操作系統佔用2G,應用可以使用2G。所以c語言的指針一定是指向了虛擬的地址,而具體的物理地址由操作系統調度和調配。

Ⅷ c/c++的指針是指向物理地址還是邏輯地址

c/c++的指針是指向邏輯地址。
以windows平台為例,任何一個C++程序肯定是運行在某一個進程中,windows的32位系統對每一個用戶進程都管理著一個定址范圍為4GB的地址空間, 各個進程的地址空間是相互獨立的,很顯然這是一個邏輯的地址空間,C++指針指向進程內的一個邏輯內存地址,然後由操作系統管理著從邏輯地十到物理地址的映射。

Ⅸ 怎麼查詢電腦物理地址

步驟如下:

方法一

1.打開【運行】按鈕。

(9)指針訪問物理地址擴展閱讀:

描述

地址從0開始編號,順序地每次加1,因此存儲器的物理地址空間是呈線性增長的。它是用二進制數來表示的,是無符號整數,書寫格式為十六進制數。它是出現在CPU外部地址匯流排上的定址物理內存的地址信號,是地址變換的最終結果。用於內存晶元級的單元定址,與處理器和CPU連接的地址匯流排相對應。

在計算機科學中,物理地址(英語:physical address),也叫實地址(real address)、二進制地址(binary address),它是在地址匯流排上,以電子形式存在的,使得數據匯流排可以訪問主存的某個特定存儲單元的內存地址。

在和虛擬內存的計算機中,物理地址這個術語多用於區分虛擬地址。尤其是在使用內存管理單元(MMU)轉換內存地址的計算機中,虛擬和物理地址分別指在經MMU轉換之前和之後的地址。在計算機網路中,物理地址有時又是MAC地址的同義詞。這個地址實際上是用於數據鏈路層,而不是如它名字所指的物理層上的。

Ⅹ linux 用戶空間怎樣使用指針直接訪問物理地址

調用到真正的read函數

這個文件描述結構以及它的openfread是C庫函數,
系統調用read會進入內核的sys_read(好像是這個名稱),它會調用到系統調用read,close,找到一個文件描述結構,
這個文件描述結構中包含了包括open, close, read, write在內的一系列的函數指針
然後,它就根據函數指針,read,write等函數,
它根據傳入的文件描述符