2014-09-28 4 views
-4
main() 
{ 

    int a[ ] = { 2, 4, 6, 8, 10 } ; 
    int i ; 
    change (a, 5) ; 
    for (i = 0 ; i <= 4 ; i++) 
    { 
     printf("\n%d", a[i]) ; 
    } 
} 
change (int *b, int n) 
{ 
    int i ; 
    for (i = 0 ; i < n ; i++) 
     *(b + i) = *(b + i) + 5 ; 
} 

Я не могу вычислить вывод вышеуказанного кода. Проблема, отображаемая при компиляции программы на http://www.compileonline.com/compile_c_online.php, находится в определении функции change(). Обнаружена ошибка: ошибка: ожидаемое выражение перед изменением (int * b, int n). Я не понимаю, что это значит. Какое выражение оно требует. Если b является указателем (он имеет адрес a), то как мы вносим изменения в его значение адреса, добавляя i.Какой будет выход следующего кода?

+4

Пожалуйста, не изменяйте свой вопрос с другим вопросом, когда есть ответы. Он чувствует, что ответы полностью не связаны с вашим вопросом. – ouah

+0

Извините, сэр, я запомню это в будущем. –

+1

Почему вы изменили исходный пост? Теперь вы изменили контекст. – user1336087

ответ

3

Вы не можете вложить функции в C. Переместить определение своей функции change вне функции main.

Также для современного C требуется указать тип возвращаемого значения в объявлениях функций, e. g., int main(void), void change (int *b, int n).

EDIT: вопрос был изменен, и теперь функция change больше не вложен. Теперь OP нуждается в объявлении функции для change до функции main.

+4

Также ему нужна декларация перед 'main' –

1

В идеале вы не должны определять свою функцию в main(). Однако если вы это сделаете, сначала определите его, а затем используйте. Также возвращаемый тип функции change должен быть void, так как эта функция ничего не возвращает, и если вы не укажете тип возврата по умолчанию int.

Изменить change (int *b, int n)void change (int *b, int n).

1

Ваш код должен быть следующим: здесь вы просто добавляете 5 к каждому значению массива a. здесь a является ссылочным типом, поэтому любые изменения, сделанные вне, отражают исходное значение, которое имеет значение.

#include<stdio.h> 
    int change (int *b, int n) 
    { 
      int i ; 
      for (i = 0 ; i < n ; i++) 
      *(b + i) = *(b + i) + 5 ; 
    } 
    int main() 
    { 

     int a[ ] = { 2, 4, 6, 8, 10 } ; 
     int i ; 
     change (a, 5) ; 
     for (i = 0 ; i <= 4 ; i++) 
     { 
      printf("\n%d", a[i]) ; 
     } 

    } 

выход:

7 
9 
11 
13 
15 
+0

@ Ани, что здесь не так? – Rustam

+0

hehehehehehehe :) тогда сделайте мой голос – Rustam

Смежные вопросы