Передача массива по ссылке или указателю - C (СИ)
Формулировка задачи:
нужно передать массив по ссылке/указателю так, чтобы функция получила копию объекта
функция должна выполнится, но исходный массив не должен изменятся.
#include <stdio.h>
void myfunc(int *a)
{
int i;
for(i=0;i<256;++i)a[i]=0;
}
void main()
{
int i, a[256];
for(i=0;i<256;i++)
{
a[i]=i;
}
myfunc(&a[0]);
for(i=0;i<256;i++)
{
printf("%d ",a[i]);
}
getchar();
}Решение задачи: «Передача массива по ссылке или указателю»
textual
Листинг программы
#include <stdio.h>
void myfunc(const int a[])
{
int i;
for(i=0;i<256;++i)
a[i]=0;
}
int main()
{
int i, a[256];
for(i=0;i<256;i++)
{
a[i]=i;
}
myfunc(a);
for(i=0;i<256;i++)
{
printf("%d ",a[i]);
}
getchar();
}
Объяснение кода листинга программы
- Включаем стандартную библиотеку stdio.h, которая содержит функции для ввода и вывода данных.
- Функция myfunc() принимает на вход массив a типа int, который передается по ссылке.
- Внутри функции myfunc() переменной i присваивается значение 0, а затем она увеличивается на 1 и сохраняется в переменной i до тех пор, пока не достигнет 256.
- Затем происходит итерация по массиву a, где каждый элемент a[i] присваивается значение i.
- Вызываем функцию myfunc(), передавая ей массив a в качестве аргумента.
- В функции main() создаем массив a типа int с размером 256.
- Используя цикл for, присваиваем каждому элементу массива a значение i.
- Используя функцию printf(), выводим каждый элемент массива a с пробелом в качестве разделителя.
- В конце программы ожидаем нажатия клавиши для завершения работы программы.