2012-02-28 46 views
0

我有一個愚蠢的問題。我試圖編寫一個程序,它將從一個函數中獲取兩個數字,並將它們發送回main,在那裏我可以使用它們。但是,當我運行下面的代碼時,返回的唯一值始終爲零。我應該改變我的指針嗎?整數指針函數

#include <stdio.h> 

void get(int *num1, int *num2); 

int main(void) 
{ 
    int num1, num2, input; 
    get(&num1, &num2); 

    printf("Num1 is %d and num2 is %d.\n", num1, num2); 
    return 0; 
} 

void get(int *num1, int *num2) 
{ 
    printf("Enter two numbers. \n"); 
    printf("Number 1: \n"); 
    scanf("%d", &num1); 

    printf("Number 2: \n"); 
    scanf("%d", &num2); 
    printf("In function, %d and %d.\n", num1, num2); 

    return; 
} 

回答

2

首先,有沒有問題。那麼,有,但這不是:-)

get其中之一,該num1num2變量已經指向整數,你不應該&前綴他們。

但是,您的應該取消引用printf內的指針的函數。請參閱以下代碼以瞭解如何操作(以及一些與手頭問題無關的外觀變化)。

#include <stdio.h> 

void get(int *num1, int *num2) { 
    printf("Enter two numbers.\n"); 

    printf("Number 1: "); 
    scanf("%d", num1);         // << No & 

    printf("Number 2: "); 
    scanf("%d", num2);         // << No & 

    printf("In function, %d and %d.\n", *num1, *num2); // Add *'s 
} 

int main(void) { 
    int num1, num2, input; 
    get(&num1, &num2); 
    printf("Num1 is %d and num2 is %d.\n", num1, num2); 
    return 0; 
} 

採樣運行:

Enter two numbers. 
Number 1: 5 
Number 2: 8 
In function, 5 and 8. 
Num1 is 5 and num2 is 8. 
+0

嘿,它的工作原理!謝謝=) – 2012-02-28 06:43:44

1

NUM1和函數內部NUM2已經指針。

因此在scanf內& num1到num1和& num2到num2。

#include <stdio.h> 


void get(int *num1, int *num2); 

int main(void) 
{ 
    int num1, num2, input; 
    get(&num1, &num2); 

    printf("Num1 is %d and num2 is %d.\n", num1, num2); 
    return 0; 
} 

void get(int *num1, int *num2) 
{ 
    printf("Enter two numbers. \n"); 
    printf("Number 1: \n"); 
    scanf("%d", num1); 

    printf("Number 2: \n"); 
    scanf("%d", num2); 
    printf("In function, %d and %d.\n", num1, num2); 

    return; 
} 
0

您到指針分配值,而不是它們指向的東西。試試下面這個:

scanf("%d", num1); 

(在C++)這樣的:

void get(int &num1, int & num2) 
{ 
    ... 
    printf("Number 1: \n"); 
    scanf("%d", &num1); 
    ... 
    return; 
} 

int main(void) 
{ 
    ...  
    get(num1, num2); 
    ... 
    return 0; 
} 
+1

第二個示例是C++而不是C,不是?還是參考添加到C1X? – paxdiablo 2012-02-28 06:24:34

+0

@paxdiablo,你是對的,謝謝。習慣的力量。我會編輯... – Beta 2012-02-28 06:53:08