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

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

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

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

Проблема: Указатель на константу (строка 22) передаваться не хочет. Вопрос: можно/нужно ли в принципе и если да то как передавать указатель на константу в функцию? Решение №1 (не работает):
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
void zero (int*,int*);
 
int main ()
 
{
    const int n = 10;
    int i, x[n], m;
    setlocale (0, "russian");
    srand (time(NULL));
//  m=n;
    for (i=0;i<n;i++)
        {
            x[i]=rand ()%100;
            printf ("x[%d]=%d\n", i, x[i]);
        }
    puts ("");
    zero (x,&n);
 
    for (i=0;i<n;i++)
        {
            printf ("x[%d]=%d\n", i, x[i]);
        }

        getch ();
            return 0;
}
 
void zero (int *ptr_mas, int *ptr_r) //функция обнуления массива
    {
        int i;
        for (i=0;i<*ptr_r;i++)
            {
                ptr_mas[i]=0;
            }
    }
Решение №2 (работает через костыль):
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
void zero (int*,int*);
 
int main ()
 
{
    const int n = 10;
    int i, x[n], m;
    setlocale (0, "russian");
    srand (time(NULL));
    m=n; //костыль
    for (i=0;i<n;i++)
        {
            x[i]=rand ()%100;
            printf ("x[%d]=%d\n", i, x[i]);
        }
    puts ("");
    zero (x,&m); //костыль
 
    for (i=0;i<n;i++)
        {
            printf ("x[%d]=%d\n", i, x[i]);
        }

        getch ();
            return 0;
}
 
void zero (int *ptr_mas, int *ptr_r) //функция обнуления массива
    {
        int i;
        for (i=0;i<*ptr_r;i++)
            {
                ptr_mas[i]=0;
            }
    }

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

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

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


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

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

6   голосов , оценка 4 из 5
Похожие ответы