LINUX.ORG.RU

в чем ошибка


0

0

#include "stdio.h"

int main (void) { 
    int a[10] = {0} ,i = 0;
    while (i != 10) {
        scanf ("%d" ,a[i]);
        i++;
    }

    return 0;
}

это вызывает  core dumped (segmentation ... ) ???? в чем беда объясните прлиз
anonymous

надо scanf ("%d" ,<b>&amp;</b>a[i]);

anonymous
()

ага бл% я сам потом врубился типа откуда сканф возьмет адрес :)

anonymous
()

Изящнее так:

scanf ("%d" , a + i);

Выражение "a + i" и есть адрес i-го элемента массива a.

Учите классиков :)

Android
()
Ответ на: Изящнее так: от Android


> Выражение "a + i" и есть адрес i-го элемента массива a.
Немного оффтопик, но все ж не удержался:)

Неск. лет назад в моем присутствии два моих приятеля сцепились по этому вопросу.
Один написАл конструкцию типа &(a[10]), а второй стал его за это плющить,
говоря, что 'Выражение "a + 10" и есть адрес 10-го элемента массива a'.
Мы тогда поспорили, естественно, остались все при своих мнениях, но я
(для себя) решил, что "идеологически верно" все же &(a[10]).
1. Читабельнее, в том плане, что сразу ясно, что речь идет об адресе.

2. В C++ операция "[]" (как, впрочем, и "+") может быть диким образом перегружена.
Нет никакой гарантии, что "a + 10" в C++ будет адресом "a[10]". Тому есть много
примеров, "[]" часто перегружают. Конечно, "&" тоже можно перегрузить,
но это, во-первых, случается реже, к тому же, оператор "&" и тогда должен
вернуть нечто осмысленное (по замыслу автора).

А, вообще, конечно, этот вопрос целиком лежит на совести программиста.

Die-Hard ★★★★★
()

А хрена вам, совесть тут не при чем. Это ИДЕОМЫ программирования, используемые с ДАННЫМ ЯЗЫКОМ.
В _правильных_ сообществах на эти темы специально пишут отдельные канонические книжки.
А тех, кто разводит базар типа "у каждого свои стандарты" (C) - мочат в сортире. Сразу.

anonymous
()

Мочить в сортире надо бы языки программирования, требующие использования таких конструкций в повседневных задачах!

anonymous
()
Ответ на: комментарий от anonymous

Да ну ? Если вы настолько круты что в повседневных задачах используете C то тогда не должно быть проблем с такими конструкциями ибо Вы должны понимать что такое компьютер и отличать его от телевизора , например. Вы же не будете резать хлеб скальпелем а дерево пилить пилкой для ногтей ? По-этому все просто: там где нужна мощь и скорость - используем asm, C , а где надо просто чего-нибудь написать , да побыстрее сдать и забыть - Basic , Pascal , Perl, PHP Shell итд. Каждому свое , а сортиры тут не причем .

Teplov
()
Ответ на: комментарий от anonymous

> А хрена вам, совесть тут не при чем. Это ИДЕОМЫ программирования ...
Слышь, чувак, как правильно:
int c;
c=1+2;
или
int c;
c=2+1;

Ась?




anonymous
()

ОПНЯРН ДЮФЕ ЛСУХ МЕ КЕРЮЧР (ЕА╧;?%) БН !!!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.