Указатель на указатель в C

CCBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В программировании на C указатели используются для хранения адресов памяти других переменных. Аналогично, указатель на указатель - это переменная, которая хранит адрес памяти другой переменной-указателя. В этом практическом занятии мы научимся писать на C программу, которая работает с указателями на указатели.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/operators("Operators") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123305{{"Указатель на указатель в C"}} c/operators -.-> lab-123305{{"Указатель на указатель в C"}} c/pointers -.-> lab-123305{{"Указатель на указатель в C"}} c/memory_address -.-> lab-123305{{"Указатель на указатель в C"}} c/output -.-> lab-123305{{"Указатель на указатель в C"}} end

Объявление необходимых переменных

В этом шаге мы объявляем три переменные: var, *ptr и **pptr.

int var;
int *ptr;
int **pptr;

Присвоение значения переменной var

В этом шаге мы присвоим значение переменной var.

var = 50;

Присвоение адреса переменной var указателю ptr

В этом шаге мы присвоим адрес переменной var указателю ptr.

ptr = &var;

Присвоение адреса указателя ptr указателю на указатель pptr

Теперь мы присвоим адрес указателя ptr указателю на указатель pptr.

pptr = &ptr;

Доступ к значению с использованием pptr

Наконец, мы получим доступ к значению var с использованием указателя на указатель pptr.

printf("\nValue of var = %d\n", var);
printf("\nValue available at *ptr = %d\n", *ptr);
printf("\nValue available at **pptr = %d\n", **pptr);

Первое выражение printf выведет значение переменной var.

Второе выражение printf выведет значение, доступное по адресу памяти, хранящемуся в ptr, которое должно быть значением var.

Третье выражение printf выведет значение, доступное по адресу памяти, хранящемуся в pptr, которое должно быть значением ptr, а затем, выполнив двойную разыменование, получим значение var.

Напишите полный код в main.c

Теперь, когда мы прошли через различные этапы, мы можем собрать код в функции main файла main.c.

#include <stdio.h>

int main()
{
    int var;
    int *ptr;
    int **pptr;

    var = 50;

    ptr = &var;

    pptr = &ptr;

    printf("Value of var = %d\n", var);
    printf("Value available at *ptr = %d\n", *ptr);
    printf("Value available at **pptr = %d\n", **pptr);

    return 0;
}

Резюме

В этом пошаговом практическом занятии мы научились писать на C программу, которая работает с указателем на указатель. Мы объявили необходимые переменные, присвоили значение переменной, присвоили адрес переменной указателю, присвоили адрес указателя указателю на указатель и, наконец, получили доступ к значению переменной с использованием указателя на указатель. Знание указателя на указатель является важным этапом в изучении C-программирования.