double dis (double *a, double *b, double *c);
void main(){
...
*m =dis(&a, &b, &c);
...
}
double dis (double *a,double *b,double *c){
return (*b)*(*b)-4*(*a)*(*c);
}
Ошибка:error C2664: dis : cannot convert parameter 1 from double ** to double *
Вроде всё сделал как надо, на msdn про ошибку читал, так там что-то про классы, а я со ссылками и функциями работаю, не шарю в системных классах этих ссылочных(
Другие языки программирования и технологии
C++ Указатели и функции.
Боже, какая каша у вас в голове.
Во-первых: зачем все эти указатели? Все можно отлично реализовать и без них. Тем более, что создавая объекты в хипе через new, вы, конечно, не думаете о том, что их нужно удалять.
double dis(double a, double b, double c) { return b * b - 4 * a * c; }
int main() { double m = dis(a, b, c); }
Прошу заметить, что правильная функция main возвращает int, а не как у вас.
Потом я немножко почитал ваши комменты к предыдущему ответу, и:
Во-вторых, когда вы используете new, то не "создаете указатель", а выделяете память в хипе (куче) процесса и присваиваете указатель на эту область памяти переменной.
В-третьих: верьте не typeid, а своему коду. Тем более если вы так криво используете этот самый typeid. Правильно вот так:
cout << typeid(d).name(); - говорит о том, что переменная - указатель.
cout << typeid(&d).name(); - говорит о том, что переменная - указатель на указатель, но только потому, что командой &d создается переменная указателя на d (которая сама есть указатель) и передается в typeid.
Во-первых: зачем все эти указатели? Все можно отлично реализовать и без них. Тем более, что создавая объекты в хипе через new, вы, конечно, не думаете о том, что их нужно удалять.
double dis(double a, double b, double c) { return b * b - 4 * a * c; }
int main() { double m = dis(a, b, c); }
Прошу заметить, что правильная функция main возвращает int, а не как у вас.
Потом я немножко почитал ваши комменты к предыдущему ответу, и:
Во-вторых, когда вы используете new, то не "создаете указатель", а выделяете память в хипе (куче) процесса и присваиваете указатель на эту область памяти переменной.
В-третьих: верьте не typeid, а своему коду. Тем более если вы так криво используете этот самый typeid. Правильно вот так:
cout << typeid(d).name(); - говорит о том, что переменная - указатель.
cout << typeid(&d).name(); - говорит о том, что переменная - указатель на указатель, но только потому, что командой &d создается переменная указателя на d (которая сама есть указатель) и передается в typeid.
Алексей Беляев
зачем мне чтобы main возвращала int?
все работает, только функция возращает тип double:
А указатели верно используете, они делают код более общим. Хотя в данном примере это совсем не нужно, можно и по ссылкам, и по значению передавать.

А указатели верно используете, они делают код более общим. Хотя в данном примере это совсем не нужно, можно и по ссылкам, и по значению передавать.
У тебя функция dis возвращает тип double, а ты её присваиваешь к указателю. Вот так должно работать (в m будет -71):
double dis (double *a, double *b, double *c);
void main(){
double a = 5;
double b = 3;
double c = 4;
double m =dis(&a, &b, &c);
}
double dis (double *a,double *b,double *c){
return (*b)*(*b)-4*(*a)*(*c);
}
double dis (double *a, double *b, double *c);
void main(){
double a = 5;
double b = 3;
double c = 4;
double m =dis(&a, &b, &c);
}
double dis (double *a,double *b,double *c){
return (*b)*(*b)-4*(*a)*(*c);
}
Алексей Беляев
У меня такая фиовина
double *a = new double(0); //типа думал, что создал указатель на дабл число равное нулю
А на самом деле после такого присвоения у меня а - не указатель, а указатель на указатель (узнал с помощью typeid(&a).name)....Я в замешательстве, если я создал таким образом указатель на указатель, то как создать просто указатель?
double *a = new double(0); //типа думал, что создал указатель на дабл число равное нулю
А на самом деле после такого присвоения у меня а - не указатель, а указатель на указатель (узнал с помощью typeid(&a).name)....Я в замешательстве, если я создал таким образом указатель на указатель, то как создать просто указатель?
Алексей Беляев
всё, нашёл решение, double a = new double(0);
Похожие вопросы
- Как правильно передать указатель на функцию
- C++. Указатели. Связный список. Как добавить элемент в конец списка? Вопрос для разбирающихся
- C++ указатель на ссылку, ссылка на указатель что можно создать и пример кода если нетрудно.
- C++. Вопрос по функции memmove()
- Помогите написать программу на c++ С использованием функций
- C++ структуры и функции
- Почему в C++ передача аргумента функции по значению считается более быстрой, чем по ссылке?
- Как разыменовать указатель в C++
- Вопрос для тех кто знает точный ответ, язык C про функции все подробности вопроса внутри...
- Зачем в С/C++ создан отдельный тип "указатель"