Zeiger und dynamische Speicherzuweisung: Zeiger sind eine Funktion in Programmiersprachen, die zum Speichern der Adresse eines anderen Speicherblocks verwendet wird. Durch die Verwendung von Zeigern kann der benötigte Speicher zur Laufzeit nach Bedarf allokiert werden. Verwenden Sie eine Zuweisungsfunktion wie malloc() oder new, um die Speicheradresse in einer Zeigervariablen zu speichern. Praktischer Fall: Verwenden Sie Zeiger, um dynamisch ein Array zum Speichern der aus einer Textdatei gelesenen Schülernoten zuzuweisen.
Zeiger und dynamische Speicherzuweisung
Ein Zeiger ist eine Programmiersprachenfunktion, die eine Adresse speichert, die auf einen anderen Teil des Speichers zeigt. Durch die Verwendung von Zeigern können wir eine dynamische Speicherzuweisung erreichen, die den Speicher nach Bedarf zur Laufzeit zuweist.
Prinzip
Wenn eine Zeigervariable erstellt wird, zeigt sie auf einen Speicherbereich, der noch nicht zugewiesen wurde. Um Speicher zuzuweisen, müssen wir eine Allokatorfunktion wie malloc()
oder new
verwenden. Die Allocator-Funktion gibt die Adresse eines neuen Speicherblocks der angegebenen Größe zurück und speichert sie in einer Zeigervariablen. 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
Syntax
C/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; }
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(); } }
grades.txt
, die Schülernoten enthält. Wir werden ein Programm erstellen, das diese Datei liest und die Noten in einem dynamisch zugewiesenen Array speichert. 🎜🎜🎜C++-Code🎜🎜rrreee🎜🎜Java-Code🎜🎜rrreeeDas obige ist der detaillierte Inhalt vonWie implementieren Zeiger die dynamische Speicherzuweisung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!