2016-03-14 5 views
-7

Код должен быть отправлен функции a int должен отправить только int и показать изменения после функции. поэтому я пробовал это:Некоторый код указателя

int main(void) 
{ 
    int number = 0; 
    printf("Please enter some number: \n"); 
    scanf("%d", &number); 
    printf("the number that you entered: %d\n", number); 
    inc(number); 
    printf("After the 'inc' function, your number is: %d\n", number); 
    system("PAUSE");  
    return 0; 
} 
/* 
*/ 
void inc(int x) 
{ 
    int* px = &x; 
    *px= *px+1; 
} 

Это печатает точно такое же число и не меняется вообще. Помогите?

+0

Вам необходимо передать адрес и изменить значение функции. –

+4

Не обижайтесь, пожалуйста, сначала перечитайте основную книгу C, указатели, пожалуйста. –

+1

'x' inside' inc' - это копия – milleniumbug

ответ

3

вы должны передать параметр как указатель

void inc(int *px) 
{ 
    *px= *px+1; 
} 

в вашем коде вы только изменение функций локальной копии х

+0

И она будет называться как 'inc (& number)' from 'main'. –

0

А hacktacularly страшная hackaround:

inc((int)&number); 

// ... 

void inc(int n) 
{ 
    ++*(int*)n; 
} 

Дон» сделайте это. Он не будет работать на всех, кроме определенных архаических архитектур.

+0

Не будет ли это работать на любой арке. где ints и указатели могут быть отброшены «безопасно» (нет, я не отстаиваю это из-за неприятной взлома, как вы говорите :)? –

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