Можно ли передать в функцию указатель на константу? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача: Напишите функцию обнуления массива. В функцию необходимо передавать указатель на массив и его размер.

Проблема: Указатель на константу (строка 22) передаваться не хочет. Вопрос: можно/нужно ли в принципе и если да то как передавать указатель на константу в функцию? Решение №1 (не работает):
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <locale.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6. void zero (int*,int*);
  7. int main ()
  8. {
  9. const int n = 10;
  10. int i, x[n], m;
  11. setlocale (0, "russian");
  12. srand (time(NULL));
  13. // m=n;
  14. for (i=0;i<n;i++)
  15. {
  16. x[i]=rand ()%100;
  17. printf ("x[%d]=%d\n", i, x[i]);
  18. }
  19. puts ("");
  20. zero (x,&n);
  21. for (i=0;i<n;i++)
  22. {
  23. printf ("x[%d]=%d\n", i, x[i]);
  24. }
  25.  
  26. getch ();
  27. return 0;
  28. }
  29. void zero (int *ptr_mas, int *ptr_r) //функция обнуления массива
  30. {
  31. int i;
  32. for (i=0;i<*ptr_r;i++)
  33. {
  34. ptr_mas[i]=0;
  35. }
  36. }
Решение №2 (работает через костыль):
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <locale.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6. void zero (int*,int*);
  7. int main ()
  8. {
  9. const int n = 10;
  10. int i, x[n], m;
  11. setlocale (0, "russian");
  12. srand (time(NULL));
  13. m=n; //костыль
  14. for (i=0;i<n;i++)
  15. {
  16. x[i]=rand ()%100;
  17. printf ("x[%d]=%d\n", i, x[i]);
  18. }
  19. puts ("");
  20. zero (x,&m); //костыль
  21. for (i=0;i<n;i++)
  22. {
  23. printf ("x[%d]=%d\n", i, x[i]);
  24. }
  25.  
  26. getch ();
  27. return 0;
  28. }
  29. void zero (int *ptr_mas, int *ptr_r) //функция обнуления массива
  30. {
  31. int i;
  32. for (i=0;i<*ptr_r;i++)
  33. {
  34. ptr_mas[i]=0;
  35. }
  36. }

Решение задачи: «Можно ли передать в функцию указатель на константу?»

textual
Листинг программы
  1. void zero (int* ptr_mas, const int* ptr_r)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы