@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;
}
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
К вашему вопросу отношения не имеет, но:
В main вы выделяете память для массива из 0 элементов.
int N=0;
char str[N];
Как думаете сколько памяти выделится под этот массив?
Еще вы, видимо, считаете, что инкрементируя N вы увеличиваете размер массива? Это не так - увеличивая N вы никак не влияете на str.

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

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

Войти через центр авторизации
Похожие вопросы