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

структуры и массивы - C++

Восстановить пароль Регистрация
 
programmer_new
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 4
22.05.2012, 17:08     структуры и массивы #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
using namespace std;
struct Worker{
    char fio[3];
    signed int date;
    double salary;
};
void print_worker(Worker);
int _tmain(int argc, _TCHAR* argv[])
{  
    
    Worker staff[3];
    for (int i=0;i<3;i++) print_worker(staff[i]);
    return 0;
}
void print_worker(Worker w){
cout << w.fio <<' '<< w.date <<' '<< w.salary <<' '<< endl;
}
1)Объясните плз откуда взялись значения элементов структур при выполнении данной программы, если в коде, как видите, нет инициализации этих элементов
2)Объясните, что означает отрицательная размерность массива в C++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2012, 17:08     структуры и массивы
Посмотрите здесь:

C++ Структуры и массивы
C++ Структуры, массивы, сортировка
Структуры/записи/массивы C++
C++ СТРУКТУРЫ И МАССИВЫ СТРУКТУР
Структуры, массивы, функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JiryPK
1 / 1 / 0
Регистрация: 13.11.2010
Сообщений: 17
22.05.2012, 17:26     структуры и массивы #2
Эти значения - "мусор", т.к. элементы не были инициализированы пользователем, компилятор сам присвоил им значения.
programmer_new
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 4
23.05.2012, 15:45  [ТС]     структуры и массивы #3
А как такое вообще возможно, чтобы компилятор самостоятельно присвоил какие-то значения, причем отличные от нуля? И почему, например, в следующем случае компилятор инициализирует подобное нулями, а не "мусором" ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include <iostream>
using namespace std;
struct {
    char fio[3];
    signed int date;
    double salary;
}p;
int _tmain(int argc, _TCHAR* argv[])
{  
    cout << p.date << ' ' << p.salary <<' '<< endl;
    return 0;
}
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.05.2012, 15:58     структуры и массивы #4
Глобальные переменные всегда инициализируются, и если это не сделано явно, то они инициализируются нулевым значением.


Цитата Сообщение от programmer_new Посмотреть сообщение
компилятор самостоятельно присвоил какие-то значения, причем отличные от нуля?
Он как раз ничего не делал. Поэтому эти значения и называются мусором.
programmer_new
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 4
24.05.2012, 15:56  [ТС]     структуры и массивы #5
а откуда берется этот "мусор" в первой программе, которую я написал в первом своем посте? почему там ненулевые значения? логично предположить было бы, что если элементы не инициализированы, значит имеют нулевое значение. Однако видно это не так. Почему?
programmer_new
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 4
26.05.2012, 18:39  [ТС]     структуры и массивы #6
че неужели никто тут не знает??
Yandex
Объявления
26.05.2012, 18:39     структуры и массивы
Ответ Создать тему
Опции темы

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