Необходимо написать параметры и тело функции func
, так чтобы строка вывода программы выглядела следующим образом: text 60
. Программа запускается, но вместо текста там просто набор символов а-ля:
ННННННННННННННННээээЭЭЭЭН0щu?I
Что я сделала не так и как это исправить?
#include <iostream>
#include <string.h>
using namespace std;
void func(int& a, char word[])
{
word = "text";
a = a*6;
}
int main()
{
int value1 = 10;
char* value2 = new char[16];
func(value1, value2);
cout << value2 << " " << value1 << "\n";
delete value2;
return 0;
}
Так же нужно найти ошибку в выделении памяти.
Для массивов символов не работает присваивание строковых литералов. Чтобы в такой массив записать какую-то строку, нужно использовать функцию strcpy
из string.h
:
void func(int& a, char word[])
{
strcpy(word, "text");
a = a*6;
}
Еще, лучше не называть переменные ничего не значащими именами value1
, value2
, а называть их согласно назначению.
Странное какое-то задание, неочевидное, и код более чем странный. Вероятно вы даже не понимаете, что делаете. А проблема в том, что word
это не внешний массив, который можно изменить простым присваиванием, а указатель.
Т.е. нет никакой разницы между
void func(int& a, char word[])
и
void func(int& a, char* word)
Внутри функции же присваивается адрес локальному для функции указателю.
Т.е. то, что снаружи функции value2
фактически никак не меняется. Чтобы оно изменилось, нужно записать данные по указателю word
, а не изменить сам указатель. Для строк это можно сделать так:
strcpy(word, "text");
Ну а ещё delete value2;
следует заменить на delete [] value2;
, т.к. выделяли память для массива, то и удалять надо как для массива.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Помогите пожалуйста выйти из творческого тупика:
Здравствуйте! Появилась надобность написать программу на С++, шифрующую русские строки, считываемые из файла с кодировкой UTF-8Использую STL wstring
Здравствуйте! Подскажите, пожалуйста, как дизассемблировать код в codeblocks?