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

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

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

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

01.03.2010, 15:55. Просмотров 759. Ответов 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 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. - C++
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. Условие:Реализовать 3 функции, каждая из которых принимает указатель на...

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

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

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Написать функцию принимающую массив и возвращающую указатель на динамический массив - C++
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий первые n нaибольших чисел. Как сделать...

Что быстрее использовать, массив э-в, или указатель на массив э-в? - C++
уважаемые, что быстрее использовать, массив э-в, или указатель на массив э-в? или без разницы? С одной стороны обращается все к той же...

9
CyBOSSeR
Эксперт С++
2306 / 1676 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.03.2010, 15:57 #2
zeeman, первый вариант primer(array) - да.
Второй - нет.
0
Genius Ignat
1237 / 775 / 44
Регистрация: 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
1237 / 775 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
01.03.2010, 16:08 #5
Указателю нужно присвоить значение адреса из указателя на первый элемент. & - это не нужно.
0
easybudda
Модератор
Эксперт CЭксперт С++
9719 / 5670 / 972
Регистрация: 25.07.2009
Сообщений: 10,916
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
1237 / 775 / 44
Регистрация: 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
Привет! Вот еще темы с ответами:

Массив и указатель - C++
При компиляции кода, приведенного ниже, вывод происходит со второго числа. Почему? int mass = {1, 2, 3, 4, 5, 6}; int *pmass = mass; ...

указатель и массив - C++
подскажите плс эти две строки эквивалентны? char* str=&quot;bla bla bla&quot;; char str={&quot;bla bla bla&quot;}; Почему при выводе адреса 1...

Указатель на массив - C++
Есть такая структура struct Elem { char cos; Elem * next; Elem * prev; }; Elem * Head=NULL,*Tail=NULL;

Указатель на массив - C++
Скажите, почему этот код нельзя скомпилировать? double a; double *pa = &amp;a; // !!!!! double *pa_2...


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

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

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