使用指针传递值

时间:2011-03-31 12:16:15

标签: c pointers

我正在学习C和指针。我遵循以下代码并提出了几个问题。

  1. 我的MS Visual Studio抱怨:使用了未初始化的本地变量'day_ret'。然后我使用Geany(另一个IDE)编译并且它可以工作。这段代码有问题吗?

  2. 我觉得编写代码的作者应该为月和日添加一些值。否则,它只会打印出内存地址,对吗?我想知道我是否应该把这个初始值放在mian之后?

  3. 参考: www.publications.gbdirect.co.uk/c_book/chapter5/pointers.html

    #include <stdio.h>
    #include <stdlib.h>
    void date(int *, int *);     /* declare the function */
    
    int main(){
          int month, day;
          date (&day, &month);
          printf("day is %d, month is %d\n", day, month);
          exit(EXIT_SUCCESS);
    }
    
    void date(int *day_p, int *month_p){
          int day_ret, month_ret;
          /*
           * At this point, calculate the day and month
           * values in day_ret and month_ret respectively.
           */
          *day_p = day_ret;
          *month_p = month_ret;
    }
    

1 个答案:

答案 0 :(得分:3)

  1. 是的 - 您错过了评论中的代码:

    /*
     * At this point, calculate the day and month
     * values in day_ret and month_ret respectively.
     */
    

    该代码会设置day_retmonth_ret。没有丢失的代码,它实际上是不完整的,您可以获得daymonth任何值。

  2. 不,它不会打印出指针。 monthday是整数变量。指向这些变量的指针被传递给date方法,该方法通过这些指针存储值。然后打印这些值。