一、根據存儲介質分
存儲器按照不同的存儲介質可以分為:內存和外存。
內存:存儲在CPU外部但與CPU有高速率的數據傳輸通道連接的存儲器。
外存:存儲在CPU外部,與CPU的數據傳輸通道連接速度較慢且容量較大的存儲器,如硬盤、U盤等。
二、按存儲數據的時間特性分
存儲器按存儲數據的時間特性可以分為:易失性存儲器和非易失性存儲器。
易失性存儲器:數據存在時間較短,如RAM。斷電後數據將丟失。
非易失性存儲器:斷電後數據不會丟失,如ROM、Flash等。
三、根據存儲單元的結構分
存儲器按存儲單元的結構可以分為:串行存儲器和並行存儲器。
串行存儲器:按位進行存儲,適用於數據量較小的場景,如寄存器。
並行存儲器:按字(位組)進行存儲,適用於數據量較大的場景,如RAM、Flash等。
四、根據讀寫特點分
存儲器按讀寫特點可以分為:隨機存儲器和順序存儲器。
隨機存儲器:可以隨機讀寫任意一個存儲單元,如SRAM、DRAM。
順序存儲器:只能按照存入的次序順序讀寫存儲單元,如磁帶機、光盤等。
五、根據存儲單元的尋址方式分
存儲器按存儲單元的尋址方式可以分為:直接尋址存儲器和間接尋址存儲器。
直接尋址存儲器:通過地址碼能夠直接訪問到存儲器中的存儲單元,如RAM、ROM等。
間接尋址存儲器:通過地址碼只能訪問一個寄存器或計數器,再通過該寄存器或計數器所存儲的地址碼才能訪問到存儲器中的存儲單元,如Cache等。
六、示例代碼
#include <stdio.h> int main() { // 聲明和定義一個數組,存儲在內存中 int arr[5] = {1, 2, 3, 4, 5}; // 聲明和定義一個指針變量,存儲在內存中 int* p = arr; // 獲取數組元素並打印 for(int i = 0; i < 5; i++) { printf("%d ", *(p + i)); } printf("\n"); // 分配內存並打印 int* ptr = (int*)malloc(sizeof(int) * 5); for(int i = 0; i < 5; i++) { ptr[i] = i; printf("%d ", *(ptr + i)); } printf("\n"); // 釋放內存 free(ptr); return 0; }
原創文章,作者:TGNUG,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/360732.html