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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
#1

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

30.11.2012, 19:55. Просмотров 272. Ответов 4
Метки нет (Все метки)

почему в массиве 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++
for (size_t i = 0, n = v.size(); i &lt; n; ++i) { //элементы вектора - string string &amp;s = v; // тут const string &amp;cs = v; //а тут? }...

Почему в выводе массива нет введенного значения - C++
Добрый день. Разъясните пожалуйста, почему в выводе массива на экран, нет введенного значения и почему в выводе отладки, такие показатели...

Почему в массиве меняются значения? - C++
Добрый вечер. Сразу код. // ConsoleApplication1.cpp : Defines the entry point for the console application. // #include...

Функцию, которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления str2 в str1 - C++
Напишите функцию rightposition, которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления...

Заменить все вхождения str1 на str2 (str1 вводится из файла, а str2 - с клавиатуры) - C++
заменить все вхождения подстроки str1 на подстроку str2; строка str1 вводится из файла, а строка str2 с клавиатуры {Ha C++}

Хорошо ли использовать унарный плюс вместо функции получения модуля? Если нет, то почему? - C++
...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Пес войны
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
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
30.11.2012, 20:29     почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет? #4
Цитата Сообщение от NeonLost Посмотреть сообщение
как указатель, если я не обьявлял указателей?..)
Имя строки (то бишь массива символов) есть указатель на его первый элемент. Заучить уж пора. В случае с массивами других типов (double, int...) ситуация аналогична.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2012, 20:30     почему в массиве str хранятся значения str2, ведь в функции создается копия...разве нет?
Еще ссылки по теме:

Почему не создается нормальная матрица - C++
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int _tmain(int argc,...

Почему не создается второй объект класса? - C++
#include &lt;string&gt; // Заголовочный файл students.h class students { public: students(std::string user_name, std::string...

На засыпку для новичков: в функции передаётся один параметр, а его значения разные; почему? - C++
#include &lt;stdio.h&gt; //Тут некоторый код void foo(X* pX) {printf (&quot;%x\n&quot;, pX);}; void bar(Y* pY) {printf (&quot;%x\n&quot;, pY);}; int...

Файловый ввод-вывод. Почему не создается/открывается файл? - C++
IDE CodeBlocks Компилятор MinGW 20120426 Вот код: ifstream in(&quot;C\\vvod.in&quot;); ofstream out(&quot;C\\vyvod.out&quot;); if (!in) ...


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

Или воспользуйтесь поиском по форуму:
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, ведь в функции создается копия...разве нет?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru