2012-02-28 53 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