Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
#1

Функция, изменяющая входящие параметры - C++

08.01.2012, 13:44. Просмотров 1299. Ответов 6
Метки нет (Все метки)

Можно ли сделать функцию, чтобы она изменяла переменные, которые ей передаются и массив (тоже передается)? Причем массив не обьявлен, как глобальный
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2012, 13:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция, изменяющая входящие параметры (C++):

Функция изменяющая сразу несколько строк - C++
Нужно, чтобы функция редактировала несколько входящих строк. char str1; char str2; void function1(char*& str1, char*& str2) ...

Функция, изменяющая число, переданное ей в качестве параметра - C++
Разработайте функцию Invert, которая возвращает число, полученное записью всех цифр некоторого натурального N в обратном порядке. Т.е.,...

Функция не принимает параметры - C++
Есть код: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> struct buffer{ int ms; char...

Шаблонная функция параметры - C++
Подскажите, где можно посмотреть перечень возможных команд в шаблонных функциях вроде: template <class InputIterator, class T> typename...

Функция принимает в параметры массив и сжимает его - C++
Написать функцию которая принимает в параметры массива и сжимает его путем сложения разных соседних местами, заполнив свободные места...

Функция принимает в параметры коефициенты квадратного уравнения и возращает сумму его корней - C++
Нужно написать функцию которая принимает в параметры коефициенты квадратного уравнения и возращает сумму его корней.Заранее спасибо

6
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,287
Записей в блоге: 2
Завершенные тесты: 1
08.01.2012, 13:52 #2
Передовать надо ссылки, либо указатели.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.01.2012, 13:54 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
void func(int& a)
{
    a = 5;
}
 
int main()
{
    int a = 3;
    std::cout << a << std::endl;
    func(a);
    std::cout << a << std::endl;
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
void func(int* a)
{
    *a = 5;
}
 
int main()
{
    int a = 3;
    printf("%d\n", a);
    func(&a);
    printf("%d\n", a);
    return 0;
}
Все это есть в книгах.
1
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
08.01.2012, 13:55  [ТС] #4
Спасибо, а с массивом как? Массив
C++
1
float*** А
C++
1
void X(float***& A)
Вот так?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.01.2012, 13:59 #5
Если трехмерный, то указатель на указатель на указатель на первый элемент массива + размер массива.

Добавлено через 45 секунд
Без &
0
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
08.01.2012, 14:05  [ТС] #6
В общем, если я напишу так:
C++
1
2
3
4
5
6
7
8
9
10
void func(float**** a)
{
    *a[0][0][0] = 5;
}
 
void X(){
float*** A;
func(A);
std::cout<<A[0][0][0];
}
Мне выведет на экран пятерку?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.01.2012, 14:25 #7
Если статический - он даже не скомпилируется. Статику нужно передавать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
void func(int a[1][1][1])
{
    a[0][0][0] = 5;
}
 
int main()
{
    int a[1][1][1];
    ***a = 3;
    std::cout << a[0][0][0] << std::endl;
    func(a);
    std::cout << a[0][0][0]<< std::endl;
    return 0;
}
А так динамика.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
void func(int ***a)
{
    a[0][0][0] = 5;
}
 
int main()
{
    int ***a = new int** [1];
    a[0] = new int* [1];
    a[0][0] = new int [1];
    ***a = 3;
    std::cout << a[0][0][0] << std::endl;
    func(a);
    std::cout << a[0][0][0]<< std::endl;
    delete[] a[0][0];
    delete[] a[0];
    delete[] a;
    return 0;
}
А у вас ничего не выведется, потому, что вы передаете не то в функцию, и пытаетесь разыменовать указатель, ни на что не указывающий.
0
08.01.2012, 14:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2012, 14:25
Привет! Вот еще темы с ответами:

Функция, изменяющая значение переменной, передаваемой ей - C#
В c# есть FileStream.Read(buffer byte, i int, o int), которая читает в buffer. Хочу сделать что-то подобное. Функция должна не возвращать...

Функция, изменяющая цвет названия папки - Delphi
Какой функцией можно изменить цвет названия папки? Например, на красный.

Определить параметры, входящие в уравнения прямых и плоскостей - Геометрия
Определить параметры, входящие в уравнения прямых и плоскостей, используя данные об их взаимном расположении. Ур. плоскости: \alpha :...

Определить параметры, входящие в уравнения прямых и плоскостей - Геометрия
Определить параметры, входящие в уравнения прямых и плоскостей, используя данные об их взаимном расположении.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru