Latest web development tutorials

C Pointer

Nauka języka C wskaźnik łatwe i przyjemne. Poprzez wskaźnik, można uprościć realizację niektórych zadań programowania C, istnieją pewne zadania, takie jak dynamiczne przydzielanie pamięci, nie ma wskaźnik jest niewykonalne. Tak, chcę stać się dobry programista C, wskaźniki uczenia się są konieczne.

Jak wiadomo, każda zmienna ma miejsce w pamięci, każda komórka pamięci określa adresu wykonawcy, dostęp może użyć myślnika (&), która reprezentuje adres w pamięci. Rozważmy następujące przykłady, które definiują zmienny adres wyjściowy:

#include <stdio.h>

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

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

   return 0;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

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

Tytułem przykładu powyżej, możemy zrozumieć, co adres pamięci i jak do niego dostęp. Spójrzmy na to, co jest wskaźnikiem.

Co to jest wskaźnik?

Wskaźnik jest zmienną, której wartością jest adres innej zmiennej, czyli bezpośredni adres miejsca w pamięci.Przed Podobnie jak inne zmienne lub stałe, należy użyć adresu pamięci wskaźnik innych zmiennych, jest ona zadeklarowana. Ogólna postać deklaracji zmiennej wskaźnik jest:

type *var-name;

Tutaj typ jest wskaźnikiem do typu bazowego, to musi być ważny typdanychC,var-name jest nazwą zmiennej wskaźnika. Służy do deklarowania wskaźnik gwiazdką * mnożenie użyć gwiazdki jest taka sama. Jednak w tym oświadczeniu, gwiazdka jest używany do określenia zmiennej jest wskaźnikiem. Poniżej znajduje się nieważny wskaźnik:

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

Wszystkie wskaźniki rzeczywisty typ danych wartości, czy jest liczbą całkowitą, pływak, łańcuch, lub inne typy danych są takie same, to liczba szesnastkowa reprezentuje długiego adresu pamięci. Jedyną różnicą pomiędzy różnymi typami danych wskaźnik, wskaźnik jest zmienną lub stałą typy danych.

Jak stosować wskaźnik?

Będą często korzystać, gdy wskaźnik następujące działania: zdefiniować zmienną wskaźnika, zmienna adres przypisany do wskaźnika, dostęp do wartości zmiennej wskaźnik dostępnych adresów. Odbywa się to za pomocą operatorem,* zwraca wartość zmiennej znajduje się w określonym adresem argumentu.Poniższe przykłady odnoszą się do poniższych czynności:

#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;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

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

Wskaźnik C NULL

W momencie deklaracji zmiennych, jeśli nie dokładny adres może być przypisany przypisać wartość NULL dla zmiennej wskaźnik jest to dobra praktyka programowania. Fu NULL wartość wskaźnika jest nazywany wskaźnikiemNULL.

Wskaźnik NULL jest zdefiniowana w bibliotece standardowej zerowe stałych. Rozważmy następujący program:

#include <stdio.h>

int main ()
{
   int  *ptr = NULL;

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

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

ptr 的值是 0

W większości systemów operacyjnych, program nie zezwala na dostęp do adresu pamięci 0, ponieważ pamięć jest zarezerwowana dla systemu operacyjnego. Jednak adres pamięci 0 ma specjalne znaczenie, oznacza to, że wskaźnik nie wskazuje dostępnym miejscu pamięci. Ale zgodnie z konwencją, jeśli wskaźnik zawiera wartość null (wartość zero), zakłada się, że nie wskazują na nic.

Aby sprawdzić wskaźnikiem NULL, można użyć instrukcji if, co następuje:

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

C wskaźnik Szczegółowy

W C, istnieje wiele wskazówek związanych z nimi pojęć, które są bardzo proste, ale bardzo ważne. Poniżej wymienione są niektóre ważne pojęcia związane ze wskaźnikiem programiści C musi być jasne:

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