Latest web development tutorials

C Pointer

C-Sprache Zeiger einfach und macht Spaß zu lernen. Durch einen Zeiger, können Sie die Umsetzung einiger der C-Programmieraufgaben zu vereinfachen, gibt es einige Aufgaben, wie zum Beispiel dynamische Speicherzuweisung, ist kein Zeiger nicht durchsetzbar. Also, ich möchte eine gute C-Programmierer zu werden, lernen Zeiger notwendig sind.

Wie Sie wissen, jede Variable einen Speicherplatz hat, definiert jeder Speicherplatz der Adressoperator Zugriff auf den Bindestrich verwenden können (&), die eine Adresse im Speicher darstellt. Man betrachte die folgenden Beispiele, die die Ausgangsvariable Adresse definieren:

#include <stdio.h>

int main ()
{
   int  var1;
   char var2[10];

   printf("var1 变量的地址: %x\n", &var1  );
   printf("var2 变量的地址: %x\n", &var2  );

   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

var1 变量的地址: bff5a400
var2 变量的地址: bff5a3f6

Als Beispiel oben, wir verstehen, was eine Speicheradresse und wie sie zuzugreifen. Lassen Sie uns sehen, was ist ein Zeiger.

Was ist ein Zeiger?

Ein Zeiger ist eine Variable , deren Wert die Adresse einer anderen Variablen, die direkte Adresse des Speicherplatzes , nämlich.Bevor Wie andere Variablen oder Konstanten, Sie einen Zeiger Speicheradresse anderer Variablen verwenden müssen, wird erklärt. Die allgemeine Form eines Zeigers Variablendeklaration:

type *var-name;

Hier Typ ist ein Zeiger auf den Basistyp, es muss ein gültiger C - Datentyp sein,var-name der Name der Zeigervariable ist. Wird verwendet, ein Zeiger Sternchen * Multiplikation zu erklären, das Sternchen ist die gleiche. Jedoch ist in dieser Erklärung wird das Sternchen verwendet eine Variable angeben, ein Zeiger ist. Hier finden Sie eine gültige Zeigerdeklaration:

int    *ip;    /* 一个整型的指针 */
double *dp;    /* 一个 double 型的指针 */
float  *fp;    /* 一个浮点型的指针 */
char   *ch     /* 一个字符型的指针 */

Alle Zeiger tatsächlichen Datentyp des Werts, ob es sich um eine ganze Zahl, float, string oder andere Datentypen gleich sind, ist eine hexadezimale Zahl steht für eine lange Speicheradresse. Der einzige Unterschied zwischen den verschiedenen Typen von Datenzeiger ist der Zeiger, der eine variable oder konstante Datentypen.

Wie den Zeiger zu benutzen?

Wird häufig den Zeiger verwenden, wenn die folgenden Aktionen durch: eine Zeigervariable definieren, die Variable-Adresse auf den Zeiger zugeordnet ist, Zugriff auf den Wert der Zeigervariable verfügbaren Adressen. Dies wird durch die Verwendung unärer Operator* getan , um den Wert der Variablen zurück in der Operanden - Adresse angegeben entfernt.Die folgenden Beispiele beziehen sich auf die folgenden Vorgänge durch:

#include <stdio.h>

int main ()
{
   int  var = 20;   /* 实际变量的声明 */
   int  *ip;        /* 指针变量的声明 */

   ip = &var;  /* 在指针变量中存储 var 的地址 */

   printf("Address of var variable: %x\n", &var  );

   /* 在指针变量中存储的地址 */
   printf("Address stored in ip variable: %x\n", ip );

   /* 使用指针访问值 */
   printf("Value of *ip variable: %d\n", *ip );

   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

Address of var variable: bffd8b3c
Address stored in ip variable: bffd8b3c
Value of *ip variable: 20

Der C-NULL-Zeiger

Zum Zeitpunkt der Variablendeklarationen, wenn nicht die genaue Adresse zugewiesen werden, weisen ein Nullwert für die Zeigervariable ist eine gute Programmierpraxis. Fu NULL - Zeiger - Wert wird einNull - Zeiger genannt.

Ein NULL-Zeiger wird in der Standardbibliothek Null Konstanten definiert. Betrachten Sie das folgende Programm:

#include <stdio.h>

int main ()
{
   int  *ptr = NULL;

   printf("ptr 的值是 %x\n", ptr  );
 
   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

ptr 的值是 0

Bei den meisten Betriebssystemen, wird das Programm nicht den Zugriff auf Speicheradresse 0 zu ermöglichen, da der Speicher für das Betriebssystem reserviert ist. Jedoch hat die Speicheradresse 0 eine besondere Bedeutung, es zeigt an, daß der Zeiger nicht auf einen zugreifbaren Speicherposition zeigt. Aber nach der Konvention, wenn der Zeiger einen Nullwert (Nullwert) enthält, wird angenommen, dass es nicht zu irgendwelchen Gegenständen verweisen.

Um sich für einen Null-Zeiger zu überprüfen, können Sie die if-Anweisung verwenden, wie folgt:

if(ptr)     /* 如果 p 非空,则完成 */
if(!ptr)    /* 如果 p 为空,则完成 */

C-Zeiger Detail

In C, gibt es viele Hinweise Konzepte im Zusammenhang, die sehr einfach sind, aber sehr wichtig. Im Folgenden sind einige wichtige Begriffe im Zusammenhang mit dem Zeiger C-Programmierer muss klar sein:

概念描述
指针的算术运算 可以对指针进行四种算术运算:++、--、+、-
指针数组 可以定义用来存储指针的数组。
指向指针的指针 C 允许指向指针的指针。
传递指针给函数 通过引用或地址传递参数,使传递的参数在调用函数中被改变。
从函数返回指针 C 允许函数返回指针到局部变量、静态变量和动态内存分配。