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

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

Войти
Регистрация
Восстановить пароль
 
MMt
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 169
#1

Передача ссылки на массив в функцию - C++

22.07.2014, 02:43. Просмотров 349. Ответов 6
Метки нет (Все метки)

запутался в 3 соснах... Помахайте плиз)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//обьявляю и инициализирую функцию
void fShow(char *pNameArray){ 
    for (int i = 0; i < 30; ++i){
        for(int k = 0; k < 3; ++k){
            
            cout    << pNameArray[i][k];
            
        }
        cout    << endl;
    }
}
 
 
int main (){
 
//------
//код
 
    case 4: fShow(pNameArray); // вызываю функцию в которой передаю сылку на массив с char  данными
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2014, 02:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача ссылки на массив в функцию (C++):

Передача ссылки и указателя в функцию - C++
передал ссылку в одну функцию - нормально, передал в другую - выводит неверное значение, тоже самое с указателем. Как можно это исправить?

Передача в функцию - ссылки, указатели, константы - C++
Вот программа: #include &lt;iostream&gt; void fun(int &amp;rhs) { rhs++; } int main()

Передача ссылки на обьект класса в функцию - C++
Определен класс в хэддере: class List{ public: //... void Add(const List *list); //... Метод Add:

Странный порядок вызова конструкторов и передача временного обьекта в функцию в качестве неконстантной ссылки - C++
Есть код //g++ 5.4.0 #include &lt;iostream&gt; struct foo { foo(int){std::cout &lt;&lt; &quot;int ctor&quot; &lt;&lt; std::endl;} foo()...

Передача ссылки в функцию в DLL - C++
Здравствуйте. По этому мануалу сделал DLL https://msdn.microsoft.com/ru-ru/library/ms235636.aspx Возникла проблема с передачей...

Передача динамического массив в функцию - C++
ругает когда передаю массивы в функцию -помогите ,как правильно это сделать? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

6
rikimaru2013
C++ Game Dev
2440 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
22.07.2014, 03:12 #2
1) Если хотите работать с адресом, то
C++
1
cout << *(pNameArray+i*3+k); // где 3 максимальное кол индексов во 2 массиве arr[][3]
2) если как с массивом - передавая двухмерный массив, как в примере выше компилятор не зная, макс. кол элементов во 2 вложении не будет знать на что же умножать адресс и бла бла бла. Пример кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
char pNameArray[100][100] = {};
 
 
void fShow(char pNameArray[][100]){ 
    for (int i = 0; i < 30; ++i){
        for(int k = 0; k < 3; ++k){
            
            cout    << pNameArray[i][k];
            
        }
        cout    << endl;
    }
}
int main(int argc, char *argv[])
{
    fShow(pNameArray);
    
    return 0;
}
3) Что-то по приятней глазу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
#define M 30
#define N 3
 
char pNameArray[M][N] = {};
 
void fShow(char pNameArray[][N])
{ 
    for (int i = 0; i < M; ++i)
    {
        for(int k = 0; k < N; ++k)
           cout << pNameArray[i][k];
                  
        cout << endl;
    }
}
int main()
{
    fShow(pNameArray);    
    return 0;
}
0
MMt
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 169
22.07.2014, 03:19  [ТС] #3
хочк работать как с массивом
мне в прототип надо передать колличество столбцов вторым числом?
C++
1
2
void show(char pNameArray[k], int k)
             {} ?
а из мейна отправить адресс массива и количество столбцов?
C++
1
2
3
int main(){
show(pNameArray, k);
}
Добавлено через 1 минуту
Я же обьявил ранее переменную К в мейне почему ее не видно?
0
rikimaru2013
C++ Game Dev
2440 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
22.07.2014, 03:23 #4
Не хотите читать 3 мой вариант? Ждите других кто поможет вам прочитать мой 3 вариант, и перетащить готовые уже решения в ваш проект )))))
0
MMt
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 169
22.07.2014, 04:04  [ТС] #5
нет, хочу понять почему у меня не работает, тупо копи-паст не катит) в любом случае спасибо за помощь )

Добавлено через 19 минут
судя по всем вашим 3 вариантам обьявление разщмера указателя на массив происходит до мейна. в этом вся соль...
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
22.07.2014, 08:41 #6
MMt, если хотите передать ссылку на массив так и передавайте ссылку на массив. Выглядеть это будет следующим образом:
C++
1
2
3
4
5
6
7
8
9
const int N = 30;
const int M = 3;
void fShow(char (&pNameArray)[N][M]){ 
    for (int i = 0; i < N; ++i){
        for(int k = 0; k < M; ++k)
            std::cout << pNameArray[i][k] << ' ';
        std::cout << endl;
    }
}
1
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
22.07.2014, 11:10 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const int N = 30;
const int M = 3;
void fShow(char **pNameArray){ 
    for (int i = 0; i < N; ++i){
        for(int k = 0; k < M; ++k)
            std::cout << pNameArray[i][k] << ' ';
        std::cout << endl;
    }
}
int main (){
 
//------
//код
 
    case 4: fShow(pNameArray); // вызываю функцию в которой передаю указатель на массив с char  данными
return 0;
}
не парьте мозг себе и человеку!

Добавлено через 1 минуту
MMt, одномерный массив char*, 2мерный char** и т.д
1
22.07.2014, 11:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2014, 11:10
Привет! Вот еще темы с ответами:

Передача указателя на массив структур в функцию - C++
Здрвствуйте! Не могу сообразить почему вылетает segmentation fault в функции, inputDate при количестве элементов в массиве &gt;2 Если есть...

Передача указателя на двумерный массив в функцию - C++
Здравствуйте. Сильно не ругайтесь, в c++ недавно. Потихоньку подошел к указателям. Могу передать указатель на одномерный массив, на...

Передача Указателя На Двумерный Массив В Функцию - C++
Как изменить код, чтобы массив объявлялся в main() и передавался в input_strings(). Код: #define MAXLENGTH 129 #define MAXSIZE 20 ...

С++, передача массива в функцию и динамический массив - C++
Привет, помогите пожалуйста переделать программку в динамический массив и с помощью передачи массива в функцию #include &lt;conio.h&gt; ...


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

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

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