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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.74
h3mbr0
212 / 55 / 13
Регистрация: 12.03.2012
Сообщений: 286
#1

В чем разница между int main(){} и int main(void){}? - C++

09.04.2012, 16:00. Просмотров 3521. Ответов 19
Метки нет (Все метки)

Только недавно начал изучать язык, и появилось несколько вопросов:
1) в чем разница между int main(){} и int main(void){}?
2) в чем разница между string.h string и cstring?
3) почему объявление char s[10]="0123456789"; переполняет массив? ведь с 0 по 9 элемент 10 символов, а 10 - \0?
4) для чего нужен экземляр структуры в виде функции? т.е struct func1() {}? чем он отличается от обычной функции?
вроде пока все)
P.S Прошу прощения что вопреки правилам все в одной теме, но не создавать же по таким пустякам столько тем
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 16:08     В чем разница между int main(){} и int main(void){}? #2
Цитата Сообщение от h3mbr0 Посмотреть сообщение
1) в чем разница между int main(){} и int main(void){}?
в C++ разницы никакой, в Си:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void f()
{
}
 
void g(void)
{
}
 
int main(void)
{
   f(1, 2, 3); //Ok - no errors
   g(1, 2, 3); //compilation error
   return 0;
}
Цитата Сообщение от h3mbr0 Посмотреть сообщение
2) в чем разница между string.h string и cstring?
string.h - описывает функции по работе с Си-строками
string - сожердит класс basic_string
cstring - оборачивает функции из string.h в пространство имен std
последние два хедера - относятся только к С++

Цитата Сообщение от h3mbr0 Посмотреть сообщение
3) почему объявление char s[10]="0123456789"; переполняет массив? ведь с 0 по 9 элемент 10 символов, а 10 - \0?
строки в двойных кавычках автоматически имеют нулевой завершающий символ

Цитата Сообщение от h3mbr0 Посмотреть сообщение
4) для чего нужен экземляр структуры в виде функции? т.е struct func1() {}? чем он отличается от обычной функции?
покажи пример, не совсем ясно что ты имеешь ввиду
h3mbr0
212 / 55 / 13
Регистрация: 12.03.2012
Сообщений: 286
09.04.2012, 16:36  [ТС]     В чем разница между int main(){} и int main(void){}? #3
строки в двойных кавычках автоматически имеют нулевой завершающий символ
но ведь их 10, а элементов с 0 по 10 - 11?
покажи пример, не совсем ясно что ты имеешь ввиду
по книге:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
struct key
{
char *keyword;
int keycount;
}tab[]={"break",0,
"case",0,
"char",0,
"continue",0,
"end",0
},bbb;
struct key BinaryInStruc(char *word,struct key tab[],int n)
{
int low=0,high=n-1,mid,cond;
while(low<=high)
{
mid=(low+high)/2;
if((cond=strcmp(word,tab[mid].keyword))<0)
high=mid-1;
if(cond<0)
{high=mid-1;continue;}
if(cond>0)
{low=mid+1;continue;}
tab[mid].keyword=0;
return(tab[mid]); //found
}
tab[mid].keycount -1;
return(tab[mid]);//not found
}
//---
int main()
{
char s[1000]
inc c;
do
{printf("enter string>");
getline(s,1000);
bbb=binaryinstruc(s,tab,5);
if(bbb.keycount!=-1) 
printf("Found string =%s\n",bbb.keyword);
else
printf("not found\n");
_getch();
}
while ((c=getchar()) != -1);
}
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 16:39     В чем разница между int main(){} и int main(void){}? #4
Цитата Сообщение от h3mbr0 Посмотреть сообщение
по книге:
это функция которая возвращает структуру

Цитата Сообщение от h3mbr0 Посмотреть сообщение
но ведь их 10, а элементов с 0 по 10 - 11?
да
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
09.04.2012, 16:42     В чем разница между int main(){} и int main(void){}? #5
Цитата Сообщение от Jupiter Посмотреть сообщение
покажи пример, не совсем ясно что ты имеешь ввиду
Скорее всего он говорит про предикативные объекты.
h3mbr0
212 / 55 / 13
Регистрация: 12.03.2012
Сообщений: 286
09.04.2012, 16:43  [ТС]     В чем разница между int main(){} и int main(void){}? #6
это функция которая возвращает структуру
а обычная функция не может возвратить структуру? разве не проще через указатель?
да
тогда почему если их 11, я ввожу 10+добавляется \0 мне пишет переполнение, хотя их ровно 11?)
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
09.04.2012, 16:48     В чем разница между int main(){} и int main(void){}? #7
Цитата Сообщение от h3mbr0 Посмотреть сообщение
т.е struct func1() {}? чем он отличается от обычной функции?

Не по теме:

коммент удален.

Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 16:49     В чем разница между int main(){} и int main(void){}? #8
Цитата Сообщение от h3mbr0 Посмотреть сообщение
а обычная функция не может возвратить структуру?
что значит обычная? это и есть обычная функция

Цитата Сообщение от h3mbr0 Посмотреть сообщение
разве не проще через указатель?
проще вообще ничего не возвращать

Цитата Сообщение от h3mbr0 Посмотреть сообщение
тогда почему если их 11, я ввожу 10+добавляется \0 мне пишет переполнение, хотя их ровно 11?)
Цитата Сообщение от h3mbr0 Посмотреть сообщение
но ведь их 10, а элементов с 0 по 10 - 11?
10 символов, но под эти 10 символов отводится 11 ячеек памяти, так понятно?
h3mbr0
212 / 55 / 13
Регистрация: 12.03.2012
Сообщений: 286
09.04.2012, 16:52  [ТС]     В чем разница между int main(){} и int main(void){}? #9
Есть библиотечные функции, которые используют данные так называемые структуры или классы, например, для какой-нибудь операции (сравнение, суммирования и т.д.).
можно поподробнее?
что значит обычная? это и есть обычная функция
а зачем она объявлена как экземпляр структуры key?
10 символов, но под эти 10 символов отводится 11 ячеек памяти, так понятно?
неочень) зачем под 10 отводить 11? что тогда в 11 хранится?
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
09.04.2012, 16:54     В чем разница между int main(){} и int main(void){}? #10
Цитата Сообщение от h3mbr0 Посмотреть сообщение
а зачем она объявлена как экземпляр структуры key?
она так не объявлена, это возвращаемый тип у вас такой.
h3mbr0
212 / 55 / 13
Регистрация: 12.03.2012
Сообщений: 286
09.04.2012, 16:59  [ТС]     В чем разница между int main(){} и int main(void){}? #11
она так не объявлена, это возвращаемый тип у вас такой.
кажется начал понимать)
только недавно структуры начал, просто у автора книги есть особенность: пояснять очевидное и игнорировать непонятное)
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 17:00     В чем разница между int main(){} и int main(void){}? #12
Цитата Сообщение от h3mbr0 Посмотреть сообщение
а зачем она объявлена как экземпляр структуры key?
C
1
2
3
4
5
6
7
struct mystruct {
    int i;
};
//...
struct mystruct obj;
/* в Си тип obj - struct mystruct - слово "struct" также является 
обязательной частью имени типа. */
C++
1
2
3
4
5
6
7
8
struct mystruct {
    int i;
};
//...
struct mystruct obj;
// в С++ тип obj - mystruct - слово "struct" необязательно, 
// но объявление как в Си - со словом struct тоже допустимо. 
//с классами ситуация аналогична
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
09.04.2012, 17:00     В чем разница между int main(){} и int main(void){}? #13
а зачем она объявлена как экземпляр структуры key?
Ну ты и вопросы задаёшь ты ещё спроси, почему
int sum(int x, int y){return x+y;}
объявлена как переменная типа int

int в начале обозначает тип возвращаемого объекта и если мы хотим возвратить из функции структуру
Мы такую функцию объявляем
struct key sum(){...итд

слово (struct key) является типом и может использоваться везде, где используются и встроенные типы (int):
возвращаемые значения функций
передаваемые им аргументы
указатели
и.т.д
h3mbr0
212 / 55 / 13
Регистрация: 12.03.2012
Сообщений: 286
09.04.2012, 17:03  [ТС]     В чем разница между int main(){} и int main(void){}? #14
спасибо, это понял, просто в книге это было описано как создание экземпляра прототипа
а что насчет
неочень) зачем под 10 отводить 11? что тогда в 11 хранится?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2012, 17:03     В чем разница между int main(){} и int main(void){}?
Еще ссылки по теме:
C++ в чем разница между void f(int &n) и void f(int &&n)
C++ VS2010 разница между "int _tmain()" и "int main()"
C++ Использование int или void в качестве возвращаемого типа для main()
Что и почему дописать в int main() чтобы функция void вернула значение C++
в чем разница между int a и int *a? C++

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 17:03     В чем разница между int main(){} и int main(void){}? #15
Цитата Сообщение от h3mbr0 Посмотреть сообщение
неочень) зачем под 10 отводить 11? что тогда в 11 хранится?
11-й символ отводится под завершающий строку символ - 0(всмысле ASCII код этого символа равен нулю)
http://ru.wikipedia.org/wiki/%D0%9F%...BB%D0%BE%D0%B2
http://ru.wikipedia.org/wiki/%D0%A3%...BE%D0%BB%D1%8B
Yandex
Объявления
09.04.2012, 17:03     В чем разница между int main(){} и int main(void){}?
Ответ Создать тему
Опции темы

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