Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2010, 15:12   #1
Gtx541
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 24
Смущение Передача const в функцию...

Вопрос чисто идеологический.
Почему программа с таким кодом не работает?

Код:
#include <iostream>
#include <conio.h>
using namespace std;

void func1 (const int x) 
{
	char buf[x];
	buf[0] = 'h';
	buf[1] = 'e';
	buf[2] = 'l';
	buf[3] = 'l';
	buf[4] = 'o';
	buf[5] = '\0';
	cout << buf;
}

int main () 
{
	const int x = 10;
	func1(x);

	_getch();
	return 0;
}
При написании большого проекта нужно было проделать вот такую операцию: передать в функцию константное выражение, в этой функции сделать массив (но без использования оператора new). Так вот, как это можно сделать? Почему компилятор не понимает, что ему передана не переменная, а константа?
Gtx541 вне форума Ответить с цитированием
Старый 13.06.2010, 15:17   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

При передаче значение копируется. У функции копия константы 10. const в скобках говорит лишь о том, что этой переменной нельзя присвоить другое значение. И почему нельзя использовать new?
netrino вне форума Ответить с цитированием
Старый 06.06.2015, 21:02   #3
Nomad_82
Новичок
Джуниор
 
Регистрация: 06.06.2015
Сообщений: 1
По умолчанию так работает

Код:
#include <iostream>
#include <conio.h>
using namespace std;
const int x = 10;
void func1 (const int x, char buf[]) 
{
	buf[0] = 'h';
	buf[1] = 'e';
	buf[2] = 'l';
	buf[3] = 'l';
	buf[4] = 'o';
	buf[5] = '\0';
	cout << buf;
}

int main () 
{
	char buf[x];
	func1(x, buf);

	_getch();
	return 0;
}

Последний раз редактировалось MaTBeu; 07.06.2015 в 05:43.
Nomad_82 вне форума Ответить с цитированием
Старый 07.06.2015, 05:49   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Цитата:
Сообщение от Gtx541 Посмотреть сообщение
Вопрос чисто идеологический.
Почему программа с таким кодом не работает?

Код:
#include <iostream>
#include <conio.h>
using namespace std;

void func1 (const int x) 
{
	char buf[x];
	buf[0] = 'h';
	buf[1] = 'e';
	buf[2] = 'l';
	buf[3] = 'l';
	buf[4] = 'o';
	buf[5] = '\0';
	cout << buf;
}

int main () 
{
	const int x = 10;
	func1(x);

	_getch();
	return 0;
}
При написании большого проекта нужно было проделать вот такую операцию: передать в функцию константное выражение, в этой функции сделать массив (но без использования оператора new). Так вот, как это можно сделать? Почему компилятор не понимает, что ему передана не переменная, а константа?

Я бы вам рекомендовал приводить ошибки, которые вы получаете при компиляции или же, если таковых нет - объяснять что конкретно не работает.

По вашему вопросу - можно использовать константную ссылку как параметр.

Код:
void func1 (const int &x)
Что касается стиля, не стоит использовать int для определения размеров каких-либо буфферов. Лучше использовать беззнаковый тип, unsigned int или же size_t. Ну и, естественно, проверять входные данные.

Последний раз редактировалось MaTBeu; 07.06.2015 в 05:56.
MaTBeu вне форума Ответить с цитированием
Старый 07.06.2015, 09:40   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Проснитесь, тема старая...
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си++. Передача массива в функцию. Diamond2107 Помощь студентам 7 03.12.2009 20:15
Передача массива в функцию D[I]K Общие вопросы C/C++ 4 13.09.2009 21:31
передача массива в функцию JOFRIF Общие вопросы C/C++ 8 02.08.2009 12:46
Передача массива в функцию Vistar Общие вопросы C/C++ 1 27.04.2009 08:08
передача указателя в функцию arturka Помощь студентам 3 06.07.2008 00:25