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

cout - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Инициализация вектора http://www.cyberforum.ru/cpp-beginners/thread350900.html
Как создать и сразу инициализировать вектор числами 5 3 1 3 5 2 5?
C++ Помогите вычислить функции с помощью разложения в ряд! Где я нетак делаю? компилятор Dev-C++ #include<iostream> #include<math.h> using namespace std; main() { float a,x,s; int k,n; http://www.cyberforum.ru/cpp-beginners/thread350887.html
C++ Непонятные ошибки
Пытаюсь скомпилировать код, а компилятор мне ошибки под ребро суёт. Как исправить ошибки? Вот пример №1: *.cpp #include "strf.h" int main() { STRF str; return 0; }
C++ Как отловить закрытие программы?
Не знаю как описать проблему, поэтому просто опишу, своими словами. На форме в TMainMenu и в TTrayIcon есть кнопки "закрыть". В них событие, которое вызывает диалог, типа "Вы уверены, что хотите выйти? Да/Нет". Соответственно если да - прога выгружается, если нет - прога остаётся работать. Но я столкнулся с проблемой - я не могу привязать это событие к кнопке "Закрыть" в диалоге, ну которая...
C++ Вычисление функции http://www.cyberforum.ru/cpp-beginners/thread350861.html
Помогите пожалуйста с функцией.Только начали учить с++ и сразу дали задачу, не получается ничего. В общем нужно написать программу, которая будет вычислять такую функцию, если задать х: сама функция прикреплена спасибо большое.
C++ Пересечение множеств Есть такое задание: Создать класс- множество. Функции-члены реализуют добавление и удаление элемента, пересечение и размность множеств. Само множество я сделал, сделал ещё две ф-ции.А вот с пересечением беда. #include "stdafx.h" #include <iostream> using namespace std; class mnozh { int *m; int size; подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.09.2011, 10:11     cout
Цитата Сообщение от androidos Посмотреть сообщение
Может не так всё и сложно
Слушайте. Как уже сказал господин dihlofos sizeof возвращает размер объекта в байтах. Размер int в байтах равен 4.
C
1
2
int arr[5];
int bytes = sizeof(arr);
Следовательно переменная bytes равна 20. То есть 5 элементов по 4 байта. Согласно простой арифметике, чтобы узнать количество элементов в массиве необходимо общее количество байт разделить на количество байт в одном элементе, то есть либо на sizeof(int) - так как элементом массива является переменная типа int, либо на sizeof(arr[0]) - через обращение непосредственно к элементу массива. Для всех остальных типов тоже самое...
Рассмотрим на вашем примере с double.
Размер double в большинстве случаев 8 байт. То есть размер массива double в байтах из 10 элементов равен 80 байт. При применении конструкции sizeof(arr)/sizeof(0) получается результат отличный от ожидаемого. В данном случае `0' является литеральной константой типа int (по умолчанию в языках С/С++). Поэтому выражение раскрывается в sizeof(arr)/sizeof(int) = 80/4, что равно 20. Хотя ожидаемый размер это 10. Если написать sizeof(0.0), то литеральная константа `0.0' (или .0 или 0. что равнозначно) имеет тип double (по умолчанию в языках С/С++). Выражение раскрывается в sizeof(arr)/sizeof(double) = 80/8 и равно 10. Что нам и требовалось.
Цитата Сообщение от androidos Посмотреть сообщение
Здесь sizeof(0) - имеется ввиду, что с нулевого элемента как я понял
Неверно, sizeof является независимым оператором и возвращает размер переданного ему объекта в байтах.
Цитата Сообщение от androidos Посмотреть сообщение
Вообще конструкция для меня новая. в шарпе и на ява там проще, просто в цикле length указываешь и всё ок, а здесь по-новому всё
Для обеспечения подобного поведения в C++ существует классы, в том числе входящие в комплект стандартной библиотеки STL. Аналогом простого массива является класс std::vector.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <vector>
 
int main() {
    std::vector<int> v(10, 1);
 
    std::cout << "vector's length: " << v.size() << std::endl;
    for (int i = 0; i < v.size(); ++i)
        std::cout << v[i] << ' ';
 }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru