2016-11-22 133 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); 

如果你傳遞一個指針,那麼你傳遞it.You副本需要傳遞地址。無需在調用函數中指定指針,您可以直接傳遞變量的地址。

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

} 
+0

絕對不知道我是怎麼錯過的。感謝您及時的回覆! – Josh

相關問題