@kyklaed

Изменяю значение по ссылке, в чем моя ошибка?

Добрый день. передаю значение по ссылке в функцию и меняю это значение в функции . после мне надо это значение использовать после отработки функции. в чем у меня ошибка ? я получаю значение N ==0 , следовательно цикл for не отрабатывает.

#include <iostream>
#include <conio.h>

using namespace std;

void conct_str(char str[],int& N){
	char c;
	char b;
	cin.get(c);
	cin.get(b);
	while (c != '\n'){
		str[N]=c;
		N++;
		cin.get(c);
		}
	while (b != '\n'){
		str[N]=b;
		N++;
		cin.get(b);
		}	
		
	str[N]='\0';
	
	}
	

int main(){
	
	int N=0;
	char str[N];
	conct_str(str, N);
	for (int i=0;i<N;i++){
		cout<<str[i];
	}
	return 0;
}
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
К вашему вопросу отношения не имеет, но:
В main вы выделяете память для массива из 0 элементов.
int N=0;
char str[N];
Как думаете сколько памяти выделится под этот массив?
Еще вы, видимо, считаете, что инкрементируя N вы увеличиваете размер массива? Это не так - увеличивая N вы никак не влияете на str.

PS: создается впечатление, что VLA для новичков - это зло.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
WakeApp Москва
от 70 000 руб.
QRate Москва
от 120 000 руб.
от 50 000 до 90 000 руб.
15 авг. 2018, в 18:50
750 руб./в час
15 авг. 2018, в 18:48
45000 руб./за проект
15 авг. 2018, в 18:14
800 руб./за проект