logo

const Указател в C

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

Постоянният указател в C не може да промени адреса на променливата, към която сочи, т.е. адресът ще остане постоянен. Следователно можем да кажем, че ако константен указател сочи към някаква променлива, тогава той не може да сочи към друга променлива.

Синтаксис на константен указател

 *const ; 

Декларацията на константен указател е дадена по-долу:

 int *const ptr; 

Нека разберем постоянния указател чрез пример.

 #include int main() { int a=1; int b=2; int *const ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

В горния код:

  • Ние декларираме две променливи, т.е. a и b със стойности 1 и 2, съответно.
  • Декларираме постоянен указател.
  • Първо присвояваме адреса на променливата 'a' на указателя 'ptr'.
  • След това присвояваме адреса на променливата 'b' на указателя 'ptr'.
  • Накрая се опитваме да отпечатаме стойността на променливата, посочена от 'ptr'.

Изход

const Указател в C

В горния изход можем да забележим, че горният код генерира грешката „присвояване на променлива само за четене „ptr“. Това означава, че стойността на променливата 'ptr', която 'ptr' държи, не може да бъде променена. В горния код променяме стойността на 'ptr' от &a на &b, което не е възможно с постоянни указатели. Следователно можем да кажем, че константният указател, който сочи към някаква променлива, не може да сочи към друга променлива.

Указател към константа

Указател към константа е указател, чрез който не може да се променя стойността на променливата, към която сочи указателят. Адресът на тези указатели може да бъде променен, но стойността на променливата, която указателят сочи, не може да бъде променена.

Синтаксис на указател към константа

 const * 

Декларацията на указател към константа е дадена по-долу:

 const int* ptr; 

Нека разберем чрез пример.

    Първо, ние пишем кода, където променяме стойността на указател
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%u',ptr); return 0; } 

В горния код:

  • Ние декларираме две променливи, т.е. a и b със стойности съответно 100 и 200.
  • Декларираме указател към константа.
  • Първо присвояваме адреса на променливата 'a' на указателя 'ptr'.
  • След това присвояваме адреса на променливата 'b' на указателя 'ptr'.
  • Накрая се опитваме да отпечатаме стойността на 'ptr'.

Изход

const Указател в C

Горният код се изпълнява успешно и показва стойността на „ptr“ в изхода.

  • Сега пишем кода, в който променяме стойността на променливата, към която сочи указателят.
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&b; *ptr=300; printf('Value of ptr is :%d',*ptr); return 0; } 

В горния код:

  • Ние декларираме две променливи, т.е. „a“ и „b“ със стойности съответно 100 и 200.
  • Декларираме указател към константа.
  • Присвояваме адреса на променливата 'b' на указателя 'ptr'.
  • След това се опитваме да променим стойността на променливата 'b' чрез указателя 'ptr'.
  • Накрая се опитваме да отпечатаме стойността на променливата, която е посочена от указателя 'ptr'.

Изход

const Указател в C

Горният код показва грешката „присвояване на местоположение само за четене „*ptr“. Тази грешка означава, че не можем да променим стойността на променливата, към която сочи указателят.

Константен указател към константа

Константен указател към константа е указател, който е комбинация от горните два указателя. Той не може нито да промени адреса на променливата, към която сочи, нито може да промени стойността, поставена на този адрес.

Синтаксис

 const * const ; 

Декларацията за константен указател към константа е дадена по-долу:

 const int* const ptr; 

Нека разберем чрез пример.

 #include int main() { int a=10; int b=90; const int* const ptr=&a; *ptr=12; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

В горния код:

  • Ние декларираме две променливи, т.е. „a“ и „b“ със стойности съответно 10 и 90.
  • Ние декларираме константен указател към константа и след това присвояваме адреса на 'a'.
  • Опитваме се да променим стойността на променливата 'a' чрез указателя 'ptr'.
  • След това се опитваме да присвоим адреса на променливата 'b' на указателя 'ptr'.
  • Накрая отпечатваме стойността на променливата, която е посочена от указателя 'ptr'.

Изход

const Указател в C

Горният код показва грешката „присвояване на местоположение само за четене „*ptr““ и „присвояване на променлива само за четене „ptr“. Следователно заключаваме, че константният указател към константа не може да промени нито адреса, нито стойността, която сочи този указател.