Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/48: Рейтинг темы: голосов - 48, средняя оценка - 4.90
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449

Как передать в функцию несколько аргументов, и другие глупые вопросы

06.06.2012, 15:04. Показов 10027. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Накопилось несколько вопросов, от простых до очень простых, и все же нужную информацию по ним не нашел. Глупо для каждого создавать свою тему, поэтому задам все в одной)

Итак:
1)Как передать в функцию неопределенное число аргументов, к примеру:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Insert(int value) {
        ListItem *prev = NULL,
            *succ = first;
        while(succ != NULL && succ->item < value) {
            prev = succ;
            succ = succ->next;
        }
        ListItem *newItem = new ListItem(value, succ);
        if(succ == NULL)
            last = newItem;
        if(prev == NULL)
            first = newItem;
        else
            prev->next = newItem;
        itemsCount++;
    }
Что нужно сделать для реализации передачи нескольких(неопределенного кол-ва) аргументов функции Insert? к примеру CList::Insert(1,2,3,4,5);

2)Можно ли наследовать сразу несколько классов (объеденять их)?

3)Есть ли разница при инициализации:
C++
1
2
3
4
class myClass {
public:
static int count=0;
};
и
C++
1
myClass::count=0
4)Каким образом можно создать таск(таймер)? К примеру что бы через 15 секунд выполнилась некая функция myFunc, при том что программа продолжала работать, а не засыпала дожидаясь истечения 15 секунд.

5)Какая разница при передачи например
C++
1
void myFunc(myClass &s)
и
C++
1
void myFunc(myClass *s)
путаюсь со ссылкоуказателеразыменовывателями

6) Какая разница между const *char, const char*? Насколько я понял разница между const char* и char const* нет, но что такое const *char? Насколько я понял(прочитал) это констатный указатель на строку, но как он используется, и корректен ли он вообще? ведь при компиляции вылезают аж 3 ошибки.

7)Когда используются extern и static? Насколько я понял (опять же где то прочитал) например extern int i; объявляет что то вроде прототипа, позволяющего обращаться к этому самому i. А static создает локальную переменную, невидимую другим объектам, и перекрывающую другие глобальные объекты, и все же везде написано по разному, и я до конца так и не понял для чего и когда нужно использовать эти ключевые.. эти слова вообщем

8)Как заставить компилятор(visual studio) компилировать под 64 разрядную систему? ибо он всегда лепит под x32

9)И наконец как высвободить память(удалить) из под переменных, объектов, выделенных не в куче, т.е.
если
C++
1
myClass *mySuperClass
удаляется
C++
1
delete mySuperClass
то как удалить
C++
1
myClass mySuperClass
?

Извиняюсь за не особо информативное название треда, и заранее благодарю за ответы
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.06.2012, 15:04
Ответы с готовыми решениями:

Как передать в функцию потока несколько аргументов?
Приветствую. Вот программа. Хочу передать в потоки 2 функции min и max, как передать в pthread_create аргументы к ним? #include...

Глупые вопросы
Здравствуйте, ищу помощи в следующих вопросах. 1. На билдере создан некий проект, где используется форма, развернутая на полный...

Глупые вопросы
Поскольку с меня электрик плохой как и электронщик хочу задать вопросы,вот допустим нужен Бп постоянного тока с током 30 А и напряжением до...

13
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 16:27
Цитата Сообщение от h3mbr0 Посмотреть сообщение
1)Как передать в функцию неопределенное число аргументов
Использовать многоточие в параметрах функции
Code
1
int Insert(...);  // принимает неопределенное число аргументов
7) Переменная static инициализируется только один раз и если она в функции то при выходе не удаляется из памяти (она просто не видна.)

Все. Больше ничего не знаю

Добавлено через 5 минут
Цитата Сообщение от h3mbr0 Посмотреть сообщение
3)Есть ли разница при инициализации:Код C++
1
2
3
4 class myClass {
public:
static int count=0;
};
Так вроде бы нельзя инициализировать
Code
1
int myClass::count = 0;
1
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
06.06.2012, 16:40  [ТС]
Цитата Сообщение от g-h Посмотреть сообщение
Использовать многоточие в параметрах функции
Code
1
int Insert(...);  // принимает неопределенное число аргументов
это я понял.. но вот как их потом выловить?
7)
Так вроде бы нельзя инициализировать
Code
1
int myClass::count = 0;
да.. опечатался... и все же, почему нельзя инициализировать в классе?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
06.06.2012, 16:52
Цитата Сообщение от h3mbr0 Посмотреть сообщение
1)Как передать в функцию неопределенное число аргументов, к примеру:
http://cplusplus.com/reference... g/va_list/

Цитата Сообщение от h3mbr0 Посмотреть сообщение
2)Можно ли наследовать сразу несколько классов (объеденять их)?
читай про множественное наследование

Цитата Сообщение от h3mbr0 Посмотреть сообщение
6) Какая разница между const *char, const char*? Насколько я понял разница между const char* и char const* нет, но что такое const *char? Насколько я понял(прочитал) это констатный указатель на строку, но как он используется, и корректен ли он вообще? ведь при компиляции вылезают аж 3 ошибки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
char a, b;
const char* c = &a;
//*c = 'a'; //ошибка - указатель на константу
  c = &b;     //Ok
  
char * const d = &a;
//d = &b; //ошибка - константный указатель
 *d = 'a'; //Ok
 
const char* const e = &a;
//*e = 'a'; //ошибка - указатель на константу
//e = &b; //ошибка - константный указатель
Цитата Сообщение от h3mbr0 Посмотреть сообщение
8)Как заставить компилятор(visual studio) компилировать под 64 разрядную систему? ибо он всегда лепит под x32
в опциях проекта, если при установке студии поставили галку на установке компонентов для x64

Цитата Сообщение от h3mbr0 Посмотреть сообщение
9)И наконец как высвободить память(удалить) из под переменных, объектов, выделенных не в куче, т.е.
если
C++
1
myClass *mySuperClass
удаляется
C++
1
delete mySuperClass
myClass *mySuperClass удаляем delete только тогда когда выделяли память через new

Цитата Сообщение от h3mbr0 Посмотреть сообщение
то как удалить
C++
1
myClass mySuperClass
?
C++
1
2
3
{
    myClass mySuperClass;
} //выходим из области видимости и все созданные в блоке переменные "удаляются"
2
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 16:58
Вот примерчик. Правда он не везде правильно работает.
Первый аргумент показывает сколько цифр надо просуммировать. Их количество может быть разным
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int my_summ(int n, ...);  // возвращает сумму чисел. Их количество равно n
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    cout << my_summ(3, 1,2,3) << endl;
 
 
    system("pause");
    return 0;
}
 
int my_summ(int n, ...)
{
    int rez = 0;
 
    for (int i=1; i<=n; i++)
        rez += *(&n + i);
 
    return rez;
}
1
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
06.06.2012, 17:10
c эллимсисами лучше не связыватся. но если уж приспичило, то для этого есть спец средства:
http://www.cplusplus.com/refer... /va_start/
2
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 17:16
Можно вопрос? Вот эту ссылку дали http://cplusplus.com/ А есть ли такой сайт, но только на русском?
0
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
06.06.2012, 22:55  [ТС]
Цитата Сообщение от g-h Посмотреть сообщение
Можно вопрос? Вот эту ссылку дали http://cplusplus.com/ А есть ли такой сайт, но только на русском?
официального нет
А как насчет остальных моих вопросов?

Добавлено через 4 часа 5 минут
ап, еще один вопрос:
на что указывает this? по сути (по определнию) на текущий объект, но откуда ему известно какой объект текущий?
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
06.06.2012, 23:02
Цитата Сообщение от h3mbr0 Посмотреть сообщение
по сути (по определнию) на текущий объект, но откуда ему известно какой объект текущий?
Он указывает на объект, для которого вызван метод. На котором именно объекте метод вызван, известно там, где и когда этот вызов происходит. Адрес этого объекта передаётся в метод как скрытый параметр и называется this.
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct Example {
    int a;
    void foo() {this->a = 0;}  // Можно было написать просто a = 0;
};
 
void bar(Example* This)
{
    This->a = 0;
}
 
int main()
{
    Example e;
    // Эти два вызова делают одно и то же, но в первом случае адрес e передаётся неявно через this
    e.foo();
    bar(&e);
}
2
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
06.06.2012, 23:28  [ТС]
А что начет 3, 4, 5, 7, и 9 вопроса?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
06.06.2012, 23:48
Цитата Сообщение от h3mbr0 Посмотреть сообщение
4)Каким образом можно создать таск(таймер)? К примеру что бы через 15 секунд выполнилась некая функция myFunc, при том что программа продолжала работать, а не засыпала дожидаясь истечения 15 секунд.
это системно зависимая возможность, если в винде то гуглите SetTimer(/*...*/)
в стандарном С++ таймера нет (пока что)

Цитата Сообщение от h3mbr0 Посмотреть сообщение
3)Есть ли разница при инициализации:
C++
1
2
3
4
class myClass {
public:
static int count=0;
};
и
C++
1
myClass::count=0
1-й код скомпилируется только компилятором поддерживающим новый стандарт - С++11
2-й код скомпилируется соответсвует прежним стандартам, а потому скомпилируется на более старых компиляторах


9-й вопрос я уже ответил в 4-м посту, что неясно?

Добавлено через 5 минут
Цитата Сообщение от h3mbr0 Посмотреть сообщение
5)Какая разница при передачи например

C++
1
void myFunc(myClass &s)
и
C++
1
void myFunc(myClass *s)
путаюсь со ссылкоуказателеразыменовывателями
что конкретно неясно?

Добавлено через 4 минуты
Цитата Сообщение от h3mbr0 Посмотреть сообщение
7)Когда используются extern и static? Насколько я понял (опять же где то прочитал) например extern int i; объявляет что то вроде прототипа, позволяющего обращаться к этому самому i. А static создает локальную переменную, невидимую другим объектам, и перекрывающую другие глобальные объекты, и все же везде написано по разному, и я до конца так и не понял для чего и когда нужно использовать эти ключевые.. эти слова вообщем
переменная объявленная как extern в одной еденице трансляции(читай файле), может использоватся в другой еденице трансляции, но в плюсах не принято использовать extern ибо это гораздо все усложняет
переменная объявленная как static наоборот видна только в одной еденице трансляции
переменная объявленная как static внутри функции сохраняет свое значение после выхода из функции
переменная объявленная как static внутри класса/структуры является общей для класса/структуры т..\е. её значение будет одинаковым для все объектов структуры/класса
1
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
07.06.2012, 12:46  [ТС]
Благодарю за исчерпывающие ответы
что конкретно неясно?
Ну на мой взгляд в обоих случаях передается адрес, и я не вижу разницы между указателем и ссылкой...
И не понимаю для чего иногда в коде объявляют ссылки(не в качестве аргумента, а в качестве переменной) и зачем это нужно
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.06.2012, 12:57
Цитата Сообщение от h3mbr0 Посмотреть сообщение
Ну на мой взгляд в обоих случаях передается адрес, и я не вижу разницы между указателем и ссылкой...
это верно, но разница в том что:
1) указателю можно присвоить другой адрес
2) вместо указателя можно передать параметром 0
с ссылками такое не прокатит, вот и вся разница
2
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
07.06.2012, 13:06
Цитата из Стивен Дьюхерст. С++ Священные знания
Между ссылками и указателями существуют три основных различия: нулевых ссылок нет, все ссылки требуют инициализации и ссылка всегда установлена на объект, который ее инициализировал.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.06.2012, 13:06
Помогаю со студенческими работами здесь

Глупые вопросы начинающего
Кризис заставляет повышать квалификацию. Сейчас действительно везде требуется знание 1С. Накачал книжек, осваиваю с азов. Можно я тут...

Глупые вопросы про + и -
Чувствую себя полным кретином. Долго ни у кого не решался спросить, но все же случайно забрел сюда. Может, судьба? 1. Из любого...

Можно ли через value передать несколько аргументов?
Доброго всем времени суток) Меня интересует возможно ли через атрибут value передать сразу несколько аргументов для функции JavaScrip???

делаю аналог FroliCat. глупые вопросы
решил кошкам сделать игрушку. погуглите FroliCat вкратце: лазер случайно бегает по двум координатам в ограниченном квадрате. решил...

Глупые вопросы по коду СИ из примера Lifelover
Доброе время. Очередной раз дошли руки пошалить с контроллером. Осваиваю статьи Lifelover про авр + enc + tcp. вообщем затык вышел вот...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru