С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

09.04.2012, 16:00. Просмотров 3833. Ответов 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 Прошу прощения что вопреки правилам все в одной теме, но не создавать же по таким пустякам столько тем
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2012, 16:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В чем разница между int main(){} и int main(void){}? (C++):

Какая разница между int main и void main? - C++
какая разница между (int main) i (void main)?

int main() или int main(void)? - C++
чем отличается : не сообщаю о наличии аргументов функция не принимает никаких аргументов.......

Какой новые синтаксис: int main() VS. void main() - C++
Долго не занимался программированием , но тут жена решила поучится , да и сам повторить ,так вот столкнулся с такой темой на 4pda может...

Почему в одних случаях пишут void main(), а в других случаях int main() {return 1;} - C++
Препод мне доказывает, что void в main`е писать неправильно, а объяснить не может почему. Кто расскажет?)

Void main or Int main - C++
Как правильнее использовать void или int в main? И обязательно возвращать return 0 в конце программы?

int main() VS void main() - C++
Вот товарищ Герберт Шилдт считает, что функция main() должна вид int main() { return 0; } Т.е. в случае удачи выполнения...

19
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 16:08 #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() {}? чем он отличается от обычной функции?
покажи пример, не совсем ясно что ты имеешь ввиду
1
h3mbr0
249 / 92 / 21
Регистрация: 12.03.2012
Сообщений: 362
09.04.2012, 16:36  [ТС] #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);
}
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 16:39 #4
Цитата Сообщение от h3mbr0 Посмотреть сообщение
по книге:
это функция которая возвращает структуру

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

Не по теме:

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

0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 16:49 #8
Цитата Сообщение от h3mbr0 Посмотреть сообщение
а обычная функция не может возвратить структуру?
что значит обычная? это и есть обычная функция

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

Цитата Сообщение от h3mbr0 Посмотреть сообщение
тогда почему если их 11, я ввожу 10+добавляется \0 мне пишет переполнение, хотя их ровно 11?)
Цитата Сообщение от h3mbr0 Посмотреть сообщение
но ведь их 10, а элементов с 0 по 10 - 11?
10 символов, но под эти 10 символов отводится 11 ячеек памяти, так понятно?
1
h3mbr0
249 / 92 / 21
Регистрация: 12.03.2012
Сообщений: 362
09.04.2012, 16:52  [ТС] #9
Есть библиотечные функции, которые используют данные так называемые структуры или классы, например, для какой-нибудь операции (сравнение, суммирования и т.д.).
можно поподробнее?
что значит обычная? это и есть обычная функция
а зачем она объявлена как экземпляр структуры key?
10 символов, но под эти 10 символов отводится 11 ячеек памяти, так понятно?
неочень) зачем под 10 отводить 11? что тогда в 11 хранится?
0
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
09.04.2012, 16:54 #10
Цитата Сообщение от h3mbr0 Посмотреть сообщение
а зачем она объявлена как экземпляр структуры key?
она так не объявлена, это возвращаемый тип у вас такой.
1
h3mbr0
249 / 92 / 21
Регистрация: 12.03.2012
Сообщений: 362
09.04.2012, 16:59  [ТС] #11
она так не объявлена, это возвращаемый тип у вас такой.
кажется начал понимать)
только недавно структуры начал, просто у автора книги есть особенность: пояснять очевидное и игнорировать непонятное)
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 17:00 #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 тоже допустимо. 
//с классами ситуация аналогична
1
Kuzia domovenok
2062 / 1907 / 176
Регистрация: 25.03.2012
Сообщений: 6,571
Записей в блоге: 1
09.04.2012, 17:00 #13
а зачем она объявлена как экземпляр структуры key?
Ну ты и вопросы задаёшь ты ещё спроси, почему
int sum(int x, int y){return x+y;}
объявлена как переменная типа int

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

слово (struct key) является типом и может использоваться везде, где используются и встроенные типы (int):
возвращаемые значения функций
передаваемые им аргументы
указатели
и.т.д
1
h3mbr0
249 / 92 / 21
Регистрация: 12.03.2012
Сообщений: 362
09.04.2012, 17:03  [ТС] #14
спасибо, это понял, просто в книге это было описано как создание экземпляра прототипа
а что насчет
неочень) зачем под 10 отводить 11? что тогда в 11 хранится?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 17:03 #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
1
09.04.2012, 17:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2012, 17:03
Привет! Вот еще темы с ответами:

От void main() к int main() - C++
Ребят, недавно начал обучаться программированию на cpp на Windows. Перешёл на Mac ( Да, знаю, что никто его не любит и не уважает здесь, но...

в чем разница между void f(int &n) и void f(int &&n) - C++
:help:

VS2010 разница между "int _tmain()" и "int main()" - C++
в книгах пишут что главная функция int main() а создается int _tmain() причем появляются ошибки если писать int main() понятно что...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.? - C++
Не понимаю, с чего начинать. Заранее спс.


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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