2016-11-22 14 views
-1

私はポインタの周りを頭に入れようとしています。ポインタを使って2つの数字を入れ替えるプログラムを書こうとしています。しかし、タイトルに記載されているようにエラーが発生しています。ここに私のコードは次のとおりです。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); 

あなたは、あなたがポインタを渡す場合、あなたはit.Youのコピーを渡している

swap(&num1,&num2); 

を渡す必要があり

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

する必要がありますアドレスを渡す必要があります。呼び出し関数内にポインターを持つ必要はなく、変数のアドレスを直接渡すことができます。

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

} 
+0

どのように私がそれを逃したか分からない。早速のご返事ありがとうございます! – Josh

関連する問題