0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 20
1

Указатель на указатель

18.10.2015, 16:00. Показов 460. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача: Дана динамическая строка размер массива символов которой точно соответствует строке. написать функцию которая добавляет переданное слово к данной строке. Решить через указатель на указатель.

Вот как я её решаю без него:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using std::cout;
using std::endl;
 
void main() {
char str[] = "London is the capital of Great Britain. The full name of the country is the United Kingdom of Great Britain and Northern Ireland. London is an ancient city.";
    char str2[] = " It grew up around the first point where the Roman invaders found the Thames narrow enough to build a bridge.";
 
    char *ptr = NULL;
    ptr = new char[strlen(str)]; //динамическая строка размер массива символов которой точно соответствует строке
    
    strcpy(ptr, str); //передаем исходное значение в строку
 
    strcat(ptr, str2); //передаем второе значение в строку
 
    cout << ptr << endl;}
Еще нужно в код очистку памяти вставить, но пока не реализовал.

Вопрос: как тут применить указатель на указатель и зачем? Что бы в функции менять указатель?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2015, 16:00
Ответы с готовыми решениями:

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения...

А почему нельзя передавать в ф-ю добавления элемента в стек один указатель? Почему нужен именно указатель на указатель?
Вот код ф-ии добавления элемента в стек: void push1(Node **top, int d) { // top...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая...

Указатель типа void. Использование косвенного связывания через универсальный указатель
Необходимо использовать косвенного связывания через универсальный указатель, примерный вид: struct...

1
7525 / 6391 / 2913
Регистрация: 14.04.2014
Сообщений: 27,845
18.10.2015, 16:19 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
using std::cout;
using std::endl;
 
void Add(char **a, char b)
{
    char *t = new char[strlen(*a) + strlen(b) + 1];
    strcat(strcpy(t, *a), b);
    delete[] *a;
    *a = t;
}
 
void main()
{
    char str[] = "London is the capital of Great Britain. The full name of the country is the United Kingdom of Great Britain and Northern Ireland. London is an ancient city.";
    char str2[] = " It grew up around the first point where the Roman invaders found the Thames narrow enough to build a bridge.";
 
    char *ptr = new char[strlen(str) + 1];
    strcpy(ptr, str); //передаем исходное значение в строку
 
   Add(&ptr, str2);
 
    cout << ptr << endl;
 
    delete[] ptr;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2015, 16:19
Помогаю со студенческими работами здесь

Функция, принимающая указатель и число байт и выделяющая память под указатель
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и...

Сохранить адрес из указателя в другой указатель, а потом первый указатель удалить
Добрый день всем. Возмём простейший пример: #include &lt;iostream&gt; using namespace std; int...

Указатель на функцию, которая принимает в качестве параметра указатель на массив
я не понимаю. вроде делаю правильно, но выходит ошибка. есть функция. int foo(int *mas){};...

Как правильно удалять выделенную память под указатель на указатель?
есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru