我正在学习C和指针。我遵循以下代码并提出了几个问题。
我的MS Visual Studio抱怨:使用了未初始化的本地变量'day_ret'。然后我使用Geany(另一个IDE)编译并且它可以工作。这段代码有问题吗?
我觉得编写代码的作者应该为月和日添加一些值。否则,它只会打印出内存地址,对吗?我想知道我是否应该把这个初始值放在mian之后?
参考: 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;
}
答案 0 :(得分:3)
是的 - 您错过了评论中的代码:
/*
* At this point, calculate the day and month
* values in day_ret and month_ret respectively.
*/
该代码会设置day_ret
和month_ret
。没有丢失的代码,它实际上是不完整的,您可以获得day
和month
的任何值。
不,它不会打印出指针。 month
和day
是整数变量。指向这些变量的指针被传递给date
方法,该方法通过这些指针存储值。然后打印这些值。