Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Освоение указателей на константы и указателей на константы в C

В C — указатель.  – это переменная, в которой хранится адрес памяти другой переменной и ключевое слово const. используется для определения переменной или указателя, значение которого не может быть изменено после инициализации. Когда мы объединяем указатели с const ключевое слово, мы можем контролировать две вещи –

В этой главе мы рассмотрим три основных варианта указателей на константы –

Постоянный указатель

постоянный указатель означает, что сам указатель постоянен. После того как он инициализирован для указания на ячейку памяти, он не может указывать на другое место, но значение, хранящееся в этом месте, все равно можно изменить.

Ниже приведен синтаксис указателя констант. −

data_type *const pointer_name = &variable;

В этом синтаксисе тип_данных — тип данных, на которые указывает указатель, *const делает сам указатель постоянным, pointer_name — имя указателя и &переменная присваивает ему адрес переменной в памяти.

Пример указателя констант

В этом примере мы объявляем константный указатель ptr. и инициализируйте его адресом переменной x . Затем мы меняем значение x. используя ptr и мы печатаем его значение.

#include <stdio.h>
int main() {
 int x = 10;
 int y = 20;
 int *const ptr = &x; // constant pointer to int
 printf("Value of x: %d\n", *ptr);
 *ptr = 15; // can change the value at address
 printf("Modified value of x: %d\n", *ptr);
 // ptr = &y; // changing pointer address is not allowed
 return 0;
}

Ниже показан выход. приведенной выше программы, которая показывает, что указатель остается фиксированным на x , но значение x можно обновить.

Value of x: 10
Modified value of x: 15

Пример постоянной ошибки указателя

Вот пример, где мы объявляем постоянный указатель ptr. и инициализируйте его адресом переменной x . Затем мы пытаемся указать на адрес переменной y. . Это приведет к ошибке . потому что указатель константы не может указывать на другую ячейку памяти после ее инициализации.

#include <stdio.h>
int main() {
 int x = 10;
 int y = 20;
 int *const ptr = &x; // constant pointer to int
 printf("Value of x: %d\n", *ptr);
 // Attempting to change the pointer to point to y
 ptr = &y; // cannot change the address of a constant pointer
 return 0;
}

Вы можете увидеть ошибку ниже. , что указывает на то, что мы не можем изменить адрес указателя константы.

error: assignment of read-only variable 'ptr'

Указатель на константу

указатель на константу означает, что значение, на которое он указывает, не может быть изменено, но сам указатель может указывать на разные адреса памяти (или переменные).

Ниже приведен синтаксис указателя на константу. −

const data_type *pointer_name = &variable;
data_type const *pointer = &variable;

В этом синтаксисе const data_type или data_type const означает, что указатель указывает на постоянное значение, pointer_name — имя указателя, а &переменная присваивает ему адрес переменной.

Пример указателя на константу

В этом примере мы объявляем указатель ptr. который указывает на постоянное значение, и присвойте ему адрес переменной a . Затем мы указываем указатель на другой адрес переменной b. и выведите его значение.

#include <stdio.h>
int main() {
 int a = 5;
 int b = 30;
 const int *ptr = &a; // pointer to constant int
 printf("Value of a: %d\n", *ptr);
 // *ptr = 10; //we cannot modify value through pointer
 ptr = &b; // canging pointer address
 printf("Now pointing to b: %d\n", *ptr);
 return 0;
}

Ниже приведен выход. приведенной выше программы, показывающий один и тот же указатель, указывающий на разные переменные.

Value of a: 5
Now pointing to b: 30

Пример указателя на постоянную ошибку

Вот пример, где мы объявляем указатель на константу ptr. и инициализируем его адресом переменной a . Затем мы пытаемся изменить значение a. через указатель. Это приведет к ошибке . потому что указатель на константу не позволяет изменять значение, на которое он указывает.

#include <stdio.h>
int main() {
 int a = 5;
 const int *ptr = &a; // pointer to constant int
 printf("Value of a: %d\n", *ptr);
 // we cnnot modify value through pointer to constant
 *ptr = 10; 
 return 0;
}

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

error: assignment of read-only location '*ptr'

Константа, указатель на константу

постоянный указатель на константу — это указатель, который не может изменить свой адрес в памяти, и значение, хранящееся по этому адресу памяти, также не может быть изменено. Оба действия ограничены, поэтому мы можем только прочитать значение и ничего больше.

Ниже приведен синтаксис константного указателя на константу. −

const data_type *const pointer_name = &variable;

В этом синтаксисе –

Пример константного указателя на константу

В этом примере мы объявляем константный указатель на константу ptr. и присвойте ему адрес памяти переменной a . Затем мы печатаем значение a. с помощью указателя.

#include <stdio.h>
int main() {
 int a = 10;
 const int *const ptr = &a; // constant pointer to constant
 printf("Value of a: %d\n", *ptr);
 // *ptr = 15; // we cannot modify value
 // ptr = &b; // we annot change pointer location
 return 0;
}

Ниже приведен выход. вышеуказанной программы −

Value of a: 10

Пример константного указателя на константную ошибку

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

#include <stdio.h>
int main() {
 int a = 10;
 int b = 20;
 const int *const ptr = &a; // constant pointer to constant
 printf("Value of a: %d\n", *ptr);
 // *ptr = 15; // we cnnot modify value
 // ptr = &b; // we cannot change pointer address
 return 0;
}

Ниже вы можете увидеть выход. показаны ошибки −

Value of a: 10

Разница между типами указателей констант

В следующей таблице показаны различия между указатель на константу, указатель на константу и указатель на константу на константу.

Вариант Определение Можно ли изменить адрес? Можно ли изменить значение? Пример синтаксиса Константный указательУказатель, адрес которого фиксирован, но значение по этому адресу можно изменить.НетДа
int *const p = &x;
Указатель на константу. Указатель, который может указывать на разные адреса, но не может изменять значение в указанном месте. ДаНет
const int *p = &x;
Указатель константы на константуУказатель, адрес которого фиксирован, и значение по этому адресу не может быть изменено.НетНет
const int *const p = &x;

Заключение

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


Язык C

  1. С# — Делегаты
  2. Переменные и операторы C# с примером
  3. Типы данных С++
  4. C Массивы
  5. Переменные и типы С++:int, double, char, string, bool
  6. C++ для цикла
  7. Полиморфизм C++ с примером
  8. С# — полиморфизм
  9. Конструкторы C++:использование аргументов по умолчанию для гибкого создания объектов
  10. Переменные C++, литералы и константы