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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить и вывести средние квадратические значения положительных элементов заданных массивов http://www.cyberforum.ru/cpp-beginners/thread1206252.html
Составить алгоритм и программу по заданному условию. Для выполнения повторяющихся неоднократно, разработать алгоритм и программный код функции.. Вычислить и вывести средние квадратические значения положительных элементов заданных массивов К1 (10), К2 (10), К3 (10).
C++ Преобразование даты в число C++ Добрый день! Имеется таблица с данными, в одной колонке даты в формате dd.mm.yyyy, а в другой колонке целые числа. по этим данным в TChart строится график, где даты- ось Х и целые числа- ось У. Хочется применить к полученному графику интерполяцию, но вот что делать с датами, перед тем как подставить их в формулу? Как и в какой тип преобразовать? http://www.cyberforum.ru/cpp-beginners/thread1206250.html
C++ Перегрузка оператора в шаблоне
Добрый день, не могу сделать данную штуку. Есть у меня шаблон вектор(не из библиотеки), и не могу перегрузить для него операторы. Не подскажите как делать? Можно пример? #include "stdafx.h" #include <iostream> using namespace std; #include <iostream> #include <fstream> #pragma warning(disable : 4996)
C++ Переписать слова из одного файла в другой, разбив их строками
Нужна не столько работающая программа, сколько объяснение, как это изобразить. Задание такое: В одном файле написаны слова через пробелы, нужно переписать их во второй файл, но чтобы каждое слово было с новой строки и заканчивалось как-нибудь литералом. #include <fstream> #include <iostream> #include <cstring> using namespace std; int main() {
C++ Какой отладчик лучше использовать? http://www.cyberforum.ru/cpp-beginners/thread1206197.html
Привет всем. Скажите, какой отладчик лучше использовать начинающему?
C++ Функция поиска в классах Помогите написать функцию поиска в классе. Спасибо. подробнее

Показать сообщение отдельно
BalexD
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 16

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

12.06.2014, 14:13. Просмотров 309. Ответов 10
Метки (Все метки)

Добрых времени суток)
Есть массив, самый обычный. Нужно передвинуть влево все значения, кроме последнего (ибо мусор нам не нужен). Т.е. если был массив {0,1,2,3}, то должен стать {1,2,3,3}. При этом все махинации нужно проводить с указателями. И вот тут-то возникло пару вопросов.

Собственно, непонятки именно с указателями. (см. код ниже) Если мы передаем адресс &а[6], но в функции прописываем *а, то передается ведь значение первого элемента, т.к. имя массива=адресс первого элемента => значение первого элемента? Как правильно записать именно такую передачу?(

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
using namespace std;
 
void less_12_1(int*, int []); //объявляем нашу функцию (int [] эквивалентно int*, насколько понимаю)
int a[6]={0,1,2,3,4,5}; //создаем массив
int *pa=&a[1];  //начинаем не с первого элемента, так что берём адрес второго (т.е. двигаемся с 1)
 
int main()
{
    bool flag=true; 
    int n;  
    while(flag)
    {
        system("clear");
        cout<<"1\t3\t\n2\t4 Exit\n"<<endl;
        cin>>n;
        system("clear");
        switch(n)
        {
            case 1: less_12_1(pa, &a[6]);break; // тут упаковываем адрес первого нужного элемента и последнего
            
            //case 2: less_12_2(); break;
            //case 3: less_12_3(); break;
 
            case 4: flag=false; break;
        }
    }
    return 0;
}
 
void less_12_1(int pa,int *a) // вот тут очень смущает *а, т.к. это, по идее, ссылка на первый элемент. 
{
    for (; pa!=&a[6]; pa++) // тут я хочу повторять цикл до тех пор, пока адрес ра не совпадет с адресом a[6],
                 //но получаю: ISO C++ forbids comparison between pointer and integer [-fpermissive] 
    {
        pa=(pa+1); 
        cout<<pa;
    }
}
И насчет for (; pa!=&a[6]; pa++) . Почему нельзя сравнивать? Ведь техничесики, что там адрес, что там. И указатель типа int, и массив типа int. В чем подвох?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru