2016-11-22 7 views
-1

Я пытаюсь найти голову вокруг указателей, и я пытаюсь написать программу, которая будет менять два числа с помощью указателей. Тем не менее, я получаю ошибку, как указано в названии. Вот мой код:C Ошибка - ожидаемые спецификаторы декларации или «...» перед маркером «*»

//This program swaps two numbers using pointers 

#include <stdio.h> 

void swap(*val1, *val2); 

int main() { 

    int num1, num2; 
    int *pNum1, *pNum2; 

    printf("Enter number 1:\n"); 
    scanf("%d", &num1); 

    printf("Enter number 2:\n"); 
    scanf("%d", &num2); 

    pNum1 = &num1; 
    pNum2 = &num2; 

    printf("Numbers not swapped: %d, %d\n", *pNum1, *pNum2); 
    swap(pNum1, pNum2); 


    return 0; 
} 

void swap(*val1, *val2) { 

    int temp; 

    temp = val1; 
    val1 = val2; 
    val2 = temp; 

    printf("Numbers swapped: %d, %d\n", *val1, *val2); 


    return; 
} 

ответ

1
void swap(*val1, *val2); 

должен быть

void swap(int *val1, int *val2); 

Затем вы должны пройти

swap(&num1,&num2); 

Если вы передаете указатель, то вы передаете копию владение.У необходимо передать адрес. Нет необходимости иметь указатели в вызывающей функции, вы можете напрямую передать адрес переменных.

void swap(int *p,int *q) 
{ 
    int t = *p; 
    *p = *q; 
    *q = t; 

} 
+0

Абсолютно никакой подсказки, как я пропустил это. Спасибо за быстрый ответ! – Josh

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

  • Нет связанных вопросов^_^