Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
zeeman
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 4
#1

указатель на массив - C++

01.03.2010, 15:55. Просмотров 773. Ответов 9
Метки нет (Все метки)

Добрый день, объясните как верно будет.
например определим массив
char array[20] = {"qaqaqaqqa"}
к примеру есть функция
void primer( char *array)
{ операторы;
}
в эту функцию я могу передать массив двумя способами
primer(array);
primer(&array);
это правильно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2010, 15:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос указатель на массив (C++):

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++....

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось...

Динамический массив и указатель на указатель
Спасибо за внимание) Задача такова: нужно удалить элемент по индексу, при этом...

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как...

Написать функцию принимающую массив и возвращающую указатель на динамический массив
Написать функцию принимающую массив и возвращающую указатель на динамический...

Что быстрее использовать, массив э-в, или указатель на массив э-в?
уважаемые, что быстрее использовать, массив э-в, или указатель на массив э-в?...

9
CyBOSSeR
Эксперт С++
2309 / 1682 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
01.03.2010, 15:57 #2
zeeman, первый вариант primer(array) - да.
Второй - нет.
0
Genius Ignat
1241 / 779 / 108
Регистрация: 16.09.2009
Сообщений: 2,014
01.03.2010, 15:58 #3
primer(&array); //это не к чему так как array это константный указатель на нулевой элемент массива.
0
zeeman
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 4
01.03.2010, 16:04  [ТС] #4
Все-таки я не пойму почему primer(&array); не верно
& -это символ взятия адреса, в данном случае я беру адрес указателя на первый элемент массива это же должно сработать!
0
Genius Ignat
1241 / 779 / 108
Регистрация: 16.09.2009
Сообщений: 2,014
01.03.2010, 16:08 #5
Указателю нужно присвоить значение адреса из указателя на первый элемент. & - это не нужно.
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
01.03.2010, 16:09 #6
Цитата Сообщение от zeeman Посмотреть сообщение
& -это символ взятия адреса, в данном случае я беру адрес указателя на первый элемент массива это же должно сработать!
так нужен-то адрес первого элемента, а не указателя на него.
0
zeeman
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 4
01.03.2010, 16:20  [ТС] #7
я щас попробовал, создал проект,
Смоделировал
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
void massiv(char *array); 
void main (void)
 {
    char arr1[20] = {"from &"};
    char arr2[20] = {"usual"};
    massiv( &arr1); 
    massiv( arr2);
 
 }
 
void massiv(char *array)
{
    puts(array);
 
}
при компиляции ворнинги есть
Compiling...
12.c
C:\temp\11\12.c(7) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'char (*)[20]'
C:\temp\11\12.c(7) : warning C4024: 'massiv' : different types for formal and actual parameter 1

12.obj - 0 error(s), 2 warning(s)
но выводится
from &
usual
Press any key to continue
Значит можно!!
0
Genius Ignat
1241 / 779 / 108
Регистрация: 16.09.2009
Сообщений: 2,014
01.03.2010, 16:26 #8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
void massiv(char *array); 
void main (void)
 {
        char arr1[20] = {"from &"};
        char arr2[20] = {"usual"};
        massiv( arr1);
        massiv( arr2);
 
 
 }
 
void massiv(char *array)
{
        puts(array);
 
}
0
zeeman
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 4
01.03.2010, 16:40  [ТС] #9
у меня ситуация следующая,
есть большой проект в котором, куча строк типа primer(&array);
вот по этому я и интересуюсь, можно ли оставить все как есть или убирать в каждом случае &
0
vetal-voyts
13 / 12 / 1
Регистрация: 23.08.2008
Сообщений: 43
01.03.2010, 16:41 #10
Цитата Сообщение от zeeman Посмотреть сообщение
я щас попробовал, создал проект,
Смоделировал
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
void massiv(char *array); 
void main (void)
 {
    char arr1[20] = {"from &"};
    char arr2[20] = {"usual"};
    massiv( &arr1); rr1); 
    massiv( arr2);
 
 }
 
void massiv(char *array)
{
    puts(array);
 
}
massiv( arr2);

}

void massiv(char *array)
{
puts(array);

} [/C]
при компиляции ворнинги есть
Compiling...
12.c
C:\temp\11\12.c(7) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'char (*)[20]'
C:\temp\11\12.c(7) : warning C4024: 'massiv' : different types for formal and actual parameter 1

12.obj - 0 error(s), 2 warning(s)
но выводится
from &
usual
Press any key to continue
Значит можно!!
error C2664: 'massiv' : cannot convert parameter 1 from 'char (*)[20]' to 'char *'
0
01.03.2010, 16:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2010, 16:41
Привет! Вот еще темы с решениями:

Указатель на массив
объясните пожалуйста что я тут делаю: char b; char* Buffer = &amp;b; ...

Указатель на массив
Здравствуйте , подскажите пожалуйста , есть функция , вопрос заключается в...

указатель и массив
подскажите плс эти две строки эквивалентны? char* str=&quot;bla bla bla&quot;; char...

Указатель на массив
Есть такая структура struct Elem { char cos; Elem * next; Elem * prev;...


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

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

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