首頁  >  文章  >  後端開發  >  指標如何實現動態記憶體分配?

指標如何實現動態記憶體分配?

王林
王林原創
2024-06-05 13:13:05740瀏覽

指標與動態記憶體分配:指標是程式語言中用來儲存另一塊記憶體位址的特徵。透過使用指針,可以在運行時根據需要分配所需記憶體。使用分配器函數(如 malloc() 或 new)將記憶體位址儲存在指標變數中。實戰案例:使用指標動態分配了一個陣列來儲存從文字檔案中讀取的學生成績。

指標如何實現動態記憶體分配?

指標與動態記憶體分配

#指標是一種程式語言特徵,它儲存指向另一塊記憶體的位址。透過使用指針,我們可以實現動態記憶體分配,即在運行時根據需要分配記憶體。

原理

當建立指標變數時,它將指向一塊尚未分配的記憶體區域。要分配內存,我們需要使用諸如 malloc()new 之類的分配器函數。分配器函數傳回一塊具有指定大小的新記憶體區塊的位址,並將其儲存在指標變數中。

語法

C/C++

#
int *ptr; // 声明一个指向 int 型变量的指针
ptr = (int *) malloc(sizeof(int)); // 分配 sizeof(int) 大小的内存并存储地址到 ptr

Java

int[] arr; // 声明一个指向 int 型数组的指针
arr = new int[10]; // 分配大小为 10 的数组并存储地址到 arr

實戰案例

假設我們有一個包含學生成績的文本檔案grades.txt。我們要建立一個程式來讀取該檔案並將其中的成績儲存在動態分配的陣列中。

C++ 程式碼

#include <iostream>
#include <fstream>

using namespace std;

int main() {
  ifstream file("grades.txt");
  int numStudents;
  file >> numStudents;

  // 分配一个具有 numStudents 个元素的数组
  int *grades = new int[numStudents];

  // 读取文件并存储成绩
  for (int i = 0; i < numStudents; i++) {
    file >> grades[i];
  }

  // 打印成绩
  for (int i = 0; i < numStudents; i++) {
    cout << grades[i] << " ";
  }
  cout << endl;

  // 释放动态分配的内存
  delete[] grades;

  return 0;
}

Java 程式碼

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class Main {
  public static void main(String[] args) throws IOException {
    File file = new File("grades.txt");
    int numStudents = Integer.parseInt(Files.readAllLines(Paths.get(file.getPath())).get(0));

    // 分配一个具有 numStudents 个元素的数组
    int[] grades = new int[numStudents];

    // 读取文件并存储成绩
    for (int i = 0; i < numStudents; i++) {
      grades[i] = Integer.parseInt(Files.readAllLines(Paths.get(file.getPath())).get(i + 1));
    }

    // 打印成绩
    for (int i = 0; i < numStudents; i++) {
      System.out.print(grades[i] + " ");
    }
    System.out.println();
  }
}

以上是指標如何實現動態記憶體分配?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn