forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Беда с функциями (http://forum.boolean.name/showthread.php?t=4588)

XenuS 26.09.2007 21:48

Беда с функциями
 
вот собсно код:
#include <iostream.h>

void Change(int *a, int b)
{
a=b;
}

void main()
{
int a=10;
cout << a << endl;
Change(&a, 17);
cout << a << endl;
}

мне надо, чтобы а меняла свое значение на, например, 17=)

так как в С++ при вызове функции создается копия всех переменных-параметров, то я создаю указатель, делаю ссылку и все ОК....
но вылазит такая ошибка:
--------------------Configuration: 123 - Win32 Debug--------------------
Compiling...
demo.cpp
F:\123\demo.cpp(5) : error C2440: '=' : cannot convert from 'int' to 'int *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

123.exe - 1 error(s), 0 warning(s)


Как сделать работающий код, а то час сижу, ничего в голову не лезеь
т....я вижу, что проблема в указателях....а что дальше?:dontknow:
=)

DarkKnight 26.09.2007 22:06

Re: Беда с функциями
 
Change(&a, 17);
у тебя же не указатель а переменная а ты получается берешь указатель.на сколько я знаю си++.надо писать так:
Change(a, 17);
и в самой функции тоже,и в прототипе.
или просто пиши new int a;(вроде так)тогда должно работать.

XenuS 26.09.2007 22:19

Re: Беда с функциями
 
все, я решил=)))
надо было так:
#include <iostream.h>

void Change(int& a, int b)
{
a=b;
}

void main()
{
int a=10;
cout << a << endl;
Change(a, 17);
cout << a << endl;
}


ЗЫ
не без твоей помощи+)

alcoSHoLiK 26.09.2007 22:50

Re: Беда с функциями
 
XenuS
Во втором случае ты просто передал ссылку. А с указателем у тебя ошибка в самой функции Change. Надо так:
Код:

*a = b;


Часовой пояс GMT +4, время: 06:09.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot