Форум программистов, компьютерный форум CyberForum.ru

почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет? - C++

Восстановить пароль Регистрация
 
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
30.11.2012, 19:55     почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет? #1
почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет?..)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
const int N=3;
void read(char str2[N]){
     cout<<"Enter string:"<<endl;
     gets(str2);
     }
int main()
{
    char str[N];
    read(str);
    for (int i=0; i<N; i++)
    {
        cout<<str[i];
    }
    getchar();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2012, 19:55     почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет?
Посмотрите здесь:

C++ Почему не создается специализация шаблона функции
Заменить все вхождения str1 на str2 (str1 вводится из файла, а str2 - с клавиатуры) C++
C++ Функцию, которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления str2 в str1
C++ Функции str.size() и str.length() - в чем их разница?
Создается ли копия объекта при индексации вектора? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
30.11.2012, 20:11     почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет? #2
Цитата Сообщение от NeonLost Посмотреть сообщение
ведь в функции создается копия...разве нет?..)
В этом случае не создается копия. Потому что функция read(char str2[N]) принимает указатель на строку (адрес строки) и никакая копия строки не создается.
То есть функция read() имеет прямой доступ к строке, которая находится в функции main()
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
30.11.2012, 20:23  [ТС]     почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет? #3
Цитата Сообщение от V.A.L.I.D Посмотреть сообщение
В этом случае не создается копия. Потому что функция read(char str2[N]) принимает указатель на строку (адрес строки) и никакая копия строки не создается.
То есть функция read() имеет прямой доступ к строке, которая находится в функции main()
как указатель, если я не обьявлял указателей?..)
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
30.11.2012, 20:29     почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет? #4
Цитата Сообщение от NeonLost Посмотреть сообщение
как указатель, если я не обьявлял указателей?..)
Имя строки (то бишь массива символов) есть указатель на его первый элемент. Заучить уж пора. В случае с массивами других типов (double, int...) ситуация аналогична.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
30.11.2012, 20:30     почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет? #5
Цитата Сообщение от NeonLost Посмотреть сообщение
как указатель, если я не обьявлял указателей?..)
Когда в функцию передаешь массив, то на самом деле ты не массив передаешь а указатель на его начало ) Адрес его первого элемента

Не по теме:

опоздал. BumerangSP ответил

Yandex
Объявления
30.11.2012, 20:30     почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет?
Ответ Создать тему
Опции темы

Текущее время: 08:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru