Беда с функциями
вот собсно код:
#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: =) |
Re: Беда с функциями
Change(&a, 17);
у тебя же не указатель а переменная а ты получается берешь указатель.на сколько я знаю си++.надо писать так: Change(a, 17); и в самой функции тоже,и в прототипе. или просто пиши new int a;(вроде так)тогда должно работать. |
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; } ЗЫ не без твоей помощи+) |
Re: Беда с функциями
XenuS
Во втором случае ты просто передал ссылку. А с указателем у тебя ошибка в самой функции Change. Надо так: Код:
*a = b; |
Часовой пояс GMT +4, время: 06:09. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot