Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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

Указатель на массив - C++
Подскажите пожалуйста, как создать указатель на массив, если длина массива записана в переменной? Т.е проблема в том что в квадратных...

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

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

Указатель на массив - C++
Не могу разобраться в указателях. Допустим есть двумерный массив, выводятся поочереди 19 элементов. Если я в инструкции if поменяю...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.03.2010, 15:57     указатель на массив #2
zeeman, первый вариант primer(array) - да.
Второй - нет.
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
01.03.2010, 15:58     указатель на массив #3
primer(&array); //это не к чему так как array это константный указатель на нулевой элемент массива.
zeeman
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 4
01.03.2010, 16:04  [ТС]     указатель на массив #4
Все-таки я не пойму почему primer(&array); не верно
& -это символ взятия адреса, в данном случае я беру адрес указателя на первый элемент массива это же должно сработать!
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
01.03.2010, 16:08     указатель на массив #5
Указателю нужно присвоить значение адреса из указателя на первый элемент. & - это не нужно.
easybudda
Эксперт CЭксперт С++
9465 / 5478 / 927
Регистрация: 25.07.2009
Сообщений: 10,500
01.03.2010, 16:09     указатель на массив #6
Цитата Сообщение от zeeman Посмотреть сообщение
& -это символ взятия адреса, в данном случае я беру адрес указателя на первый элемент массива это же должно сработать!
так нужен-то адрес первого элемента, а не указателя на него.
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
Значит можно!!
Genius Ignat
1235 / 773 / 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);
 
}
zeeman
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 4
01.03.2010, 16:40  [ТС]     указатель на массив #9
у меня ситуация следующая,
есть большой проект в котором, куча строк типа primer(&array);
вот по этому я и интересуюсь, можно ли оставить все как есть или убирать в каждом случае &
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2010, 16:41     указатель на массив
Еще ссылки по теме:

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

Указатель и массив - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main () { setlocale (0,&quot;&quot;); int *a,size; cout &lt;&lt;...

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

Массив и указатель на строку - C++
class Frabjous { private: char fab; public: Frabjous(const char *s=&quot;C++&quot;):fab(s) {} ... }


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

Или воспользуйтесь поиском по форуму:
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 *'
Yandex
Объявления
01.03.2010, 16:41     указатель на массив
Ответ Создать тему
Опции темы

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