0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 15

Передача массива по ссылке или указателю

15.05.2011, 08:35. Показов 4043. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно передать массив по ссылке/указателю так, чтобы функция получила копию объекта

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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();  
}
функция должна выполнится, но исходный массив не должен изменятся.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.05.2011, 08:35
Ответы с готовыми решениями:

Передача параметров по указателю, ссылке и значению
Задание: Вычислить Y(x) и S(x). (где x принадлежит диапазону ) Y(x) и S(x) реализовать в виде отдельных функций. Продемонстрировать ...

Передача двумерного массива в функцию по указателю
Доброго времени суток. Есть вот такая вот функция сортировки. Да, она примитивная, но мне сейчас не это важно. Мне надо знать: 1....

Передача по ссылке структуры в процедуры или функции
Правильно ли передавать структуру по ссылке так. typedef struct BigNum { int sign; // Знак числа, 1 или -1. int *data; ...

3
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
15.05.2011, 09:26
Цитата Сообщение от baduzzzer Посмотреть сообщение
нужно передать массив по ссылке/указателю так, чтобы функция получила копию объекта.
функция должна выполнится, но исходный массив не должен изменятся.
Это что за изврат?
Когда передается ссылка-указатель, то по-любому передается адрес (указатель - явно, ссылка - подпольно). Поэтому любые изменения в функции приводят к изменению исходного массива.
Если только в главной функции сделать копию массива и с ней работать. А исходный - не изменять.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.05.2011, 13:17
Лучше в вызываемой функции делать копию и работать с ней, а по завершении удалять копию. Только смысл в этом?
Ну или обернуть массив в структуру и передавать структуру.
1
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
15.05.2011, 13:33
Массив всегда передаётся по ссылке, можно сделать функцию константной и не позволять ей редактировать исходный массив разве что
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.05.2011, 13:33
Помогаю со студенческими работами здесь

Передача массива по ссылке
Как передать массив по ссылке в функцию? #include &lt;stdio.h&gt; #define STUDENTS 3 #define EXAMS 4 void function1 ( int , int , int...

Передача параметра по указателю
Объясните пожалуйста по какой причине при вызове func(&amp;c) параметр &quot;c&quot; не меняет своего значения. #include &lt;stdio.h&gt; int...

Передача аргумента в функцию а не по указателю
Доброе время суток помогите разобраться как сделать задача: Написать функцию, которая удаляет начальные пробелы из строки,...

Передача по ссылке или по указателю
Класс А здесь минимальный в реальности у него много переменных. Как лучше поступить в таком случае? Удобнее выпольнить передачу по ссылке,...

Передача по ссылке или указателю?
В каких случаях лучше передавать в функцию ссылки, а в каких указатели?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Деплой Flask приложения
py-thonny 23.06.2025
За годы работы с Flask я натыкался на одни и те же грабли достаточно часто, чтобы наконец научится их обходить. И сегодня хочу поделится опытом, который сбережет вам немало нервных клеток. Начнем с. . .
WebAssembly и контейнеры в .NET Aspire для оркестрации распределенных архитектур
ArchitectMsa 23.06.2025
Я наблюдаю, как WebAssembly (или просто WASM) постепенно выходит за рамки своего первоначального предназначения — исполнения кода на стороне браузера. Теперь эта технология проникает в серверную. . .
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru