Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/70: Рейтинг темы: голосов - 70, средняя оценка - 4.56
4 / 4 / 0
Регистрация: 11.03.2012
Сообщений: 120
1

E2034 Cannot convert 'int *' to 'int'

11.03.2012, 16:46. Показов 13451. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите разобраться,почему вылазит ошибка

[C++ Error] Unit1.cpp(34): E2034 Cannot convert 'int' to 'int *'
[C++ Error] Unit1.cpp(34): E2342 Type mismatch in parameter 'm' (wanted 'int *', got 'int')

С++ начал недавно изучать...поэтому часто возникают не понятные мне ошибки,а почему не понимаю)


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
40
#pragma hdrstop
 
#include <iostream.h>
#include <conio.h>
#include <tchar.h>
//---------------------------------------------------------------------------
const int MAX = 100;
 
int maxint(int m[MAX],int kol)
{
    int maxis=0;
    for (int j = 0; j < kol; j++) {
        if (m[j]>m[maxis]) {maxis=j;}
    }
    return maxis;
}
 
#pragma argsused
int main(int argc, _TCHAR* argv[])
{
    wcout.imbue(locale(".866"));
 
 
    int masiv[MAX];
    int i=0;
    char fl='y';
    int maxindex;
    do
    {
        wcout<<L"\nВведите число: "; cin>>masiv[i++];
        wcout<<L"Еще? y/n?";
    } while((fl=getche() != 'n') && (i<MAX));
 
    maxindex = maxint(masiv[MAX],i);
    wcout <<L"Число "<<masiv[maxindex]<<L" ,с индексом "
          <<maxindex<<L" является максимальным";
 
    getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2012, 16:46
Ответы с готовыми решениями:

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)'
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5...

Сannot convert ‘int (*)[10]’ to ‘int*’ for argument ‘4’ to ‘int
Все вроде правильно..И в визуале работает а на линуксе(код блок) не работает.. #include &quot;mpi.h&quot;...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int)
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй...

Cannot convert int to int* и обратно
В общем есть код: //---------------------------------------------------------------------------...

25
Schizorb
09.01.2013, 18:00     E2034 Cannot convert 'int *' to 'int'
  #21

Не по теме:

sbnm, так я о создании массива речь веду, а не о передаче его в функцию.

0
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 11
09.01.2013, 18:02 22
значит я что то не понимаю...
0
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
09.04.2015, 12:44 23
Подскажите,что за ерунда.Что ему не нравится?
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
40
41
42
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
 
void selectionSort(int[],int);
 
int main()
{
 const int size=10;
 int array[size]={63,52,9,18,23,66,43,10,1,84};
 
 for(int i=0;i<size;i++)
   cout << array[i] << " ";
 cout << endl;
 
 selectionSort(array,size);
 
 for(int i=0;i<size;i++)
   cout << array[i] << " ";
  cout << endl << endl;
 
 system("pause");
 return 0;
}
void selectionSort(int a[],int n)
{
 int t=0,tmp,z=0;
 tmp=a[t];
 for(int i=0;i<n;i++)
   if(a[i]<a[t])
     t=i;
 
 a[z]=a[t];
 a[t]=tmp;
 
 if(n>1)
    selectionSort(a[z+1],n-1);
}
Орет ошибку в последней строке -
[C++ Error] Unit1.cpp(38): E2034 Cannot convert 'int' to 'int *'
[C++ Error] Unit1.cpp(38): E2342 Type mismatch in parameter 'a' (wanted 'int *', got 'int')

Что не так?
0
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
09.04.2015, 12:46 24
C++
1
selectionSort(a[z+1],n-1);
Передаёшь в функцию элемент массива, а функция принимает массив.

Если надо передать часть массива, начинающуюся с этого элемента, то так:
C++
1
selectionSort(&(a[z+1]),n-1); // передаём адрес (указатель) элемента, а не сам элемент
1
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
09.04.2015, 13:03 25
John Prick, спасибо, написал
C++
1
selectionSort(a+1,n-1);
все заработало .Блин сколько раз натыкаюсь на такую фигню,и потом подолгу не могу понять где косяка впорол...

Добавлено через 9 минут
John Prick, А можешь пояснить такую вещь,все работает,просто не соображу принципа.Я передаю функции a+1,это что передается? Элемент массива со сдвигом на 1?Просто что-то представить не могу что конкретно передается,если передается массив со сдвигом на 1.
0
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
09.04.2015, 13:26 26
Если упрощённо, ты передаёшь в функцию не сам массив, а указатель на него, т.е. адрес его первого элемента. (Точнее, для С++ - нулевого элемента)
C++
1
2
3
int a[n] = { /*...*/ };
func(a, n); // передали указатель на 0й элемент
func(a + 1, n - 1); // передали указатель на 1й элемент. Как будто передали подмассив
1
09.04.2015, 13:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2015, 13:26
Помогаю со студенческими работами здесь

Ошибка: cannot convert 'int**' to 'int (*)[10]'
Мне выдаёт ошибку при вызове функции 50 cannot convert 'int**' to 'int (*)' for argument '1' to...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H ...

cannot convert 'int' to 'int*'
Дорогие форумчане, помогите, пожалуйста. В программе возникает ошибка cannot convert 'int' to...

cannot convert int(*)() to int . .
Доброго времени суток! Пытался создать массив из указателей на функции. typedef int...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru